Открытие найденого файла

Гимаев Наиль

Активный пользователь
Сообщения
59
Реакции
98
Я же попросил без cd /d "%~dp0"
Если стоит задача обратиться к файлу относительно батника, находясь в произвольной папке, то можно записать так:
CMD/BATCH:
"%~dp0..\n2\autorunsc.exe"
 
Последнее редактирование модератором:

Victoreva

Активный пользователь
Сообщения
57
Реакции
2
Скажите пожалуйста почему,когда я пишу следующее, появляется справка о команде и окно закрывается:
CMD/BATCH:
for /f "UsebackQ delims=" %%a in (`..\utilite\autorunsc.exe -a ^| findstr /n /R "File\ not\ found"`) do (
Команда
CMD/BATCH:
autorunsc.exe -a | findstr /n /R "File\ not\ found"
непосредственно при введении в командную строку выполняется.

И еще такой вопрос: хочу чтоб в консоли отображалась надпись, если команда ничего не нашла (по умолчанию, в случае того, если утилита не находит нужное, она ничего не выдает). Так вот написал следующий код:
CMD/BATCH:
@echo off

cd /d "%~dp0"
cd ..
cd "Files"

chcp 1251> nul
set q=Ничего не найдено
chcp 866> nul

SetLocal EnableExtensions EnableDelayedExpansion
set "qt=""
set result=quotes.txt
copy /y> nul nul"%result%"

set CpReady=
for /f "UsebackQ delims=" %%a in (`wmic service get name^,displayname^,pathname^,startmode^|find /i "auto"^|find /i /v "%SystemRoot%"^|findstr /i /v "!qt!"`) do (
  if not defined cpReady (chcp 1251 >nul& set CpReady=True)
  call :convert "%%a"
)

:convert
>>"%result%" cmd /c echo.%~1
for /f %%a in ("%result%") do if "%%~za"=="0" (goto :o1) else goto :o2
goto :eof

:o1
echo %q%
del quotes.txt

:o2
del quotes.txt
wmic service get name,displayname,pathname,startmode |find /i "auto" |find /i /v "%SystemRoot%" |findstr /i /v "!qt!"

Текстовый файл, который он создает, пуст, тем не менее в командной строке я вижу следующее:

C:\Users\User\Files>for /F %a in ("quotes.txt"
) do if "%~za" == "0" (goto :eek:1 ) else goto :eek:2

C:\Users\User\Files>if "12" == "0" (goto :eek:1 )
else goto :eek:2

C:\Users\User\Files>del quotes.txt

C:\Users\User\Files>wmic service get name,displayname,pathname, startmode | findstr /i "auto" | findstr /i /v "%SystemRoot%" | findstr /i /v """

Откуда он взял значение 12??
 
Последнее редактирование:

Dragokas

Angry & Scary Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,799
Реакции
6,264
Справка:
For /?
~z - размер файла quotes.txt
непосредственно при введении в командную строку выполняется.
Вводите в командную строку не
Код:
autorunsc.exe
а
Код:
..\utilite\autorunsc.exe
и смотрите, где ошибились. Наверное опять не из той папки запускаете.
 

Victoreva

Активный пользователь
Сообщения
57
Реакции
2
Если бы я не из той папки его запускал, в консоли бы это отобразилось - не удается найти то то. Утилиту он находит.

Можете тогда написать как задать условие - если файл пустой, то..
 
Последнее редактирование:

Dragokas

Angry & Scary Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,799
Реакции
6,264
Также как и Вы. Только знак : возле метки у goto не нужен.
 

Victoreva

Активный пользователь
Сообщения
57
Реакции
2
Также как и Вы. Только знак : возле метки у goto не нужен.
Работает все равно неправильно, файл пуст. И тем не менее он переходит по второй метке..
На счет того, что вместо команды вызывается справка у вас нет идей?
 

Dragokas

Angry & Scary Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,799
Реакции
6,264
Команда
Код:
autorunsc.exe -a | findstr /n /R "File\ [URL='http://www.ss64.com/nt/not.html']not[/URL]\ found"
непосредственно при введении в командную строку выполняется.
Давайте отделим мух от котлет.
Если это совершенно другой код, выложите его полностью в другой теме.
Гадать что там неправильно как то нет времени.
Работает все равно неправильно, файл пуст. И тем не менее он переходит по второй метке..
На счет того, что вместо команды вызывается справка у вас нет идей?
У Вас больно слишком сложный код даже для того, чтобы разобраться.
Можно уложиться в десяток строк:
CMD/BATCH:
@echo off
SetLocal EnableExtensions EnableDelayedExpansion
set "qt=""
set result=quotes.txt
wmic service get name,displayname,pathname,startmode |find /i "auto" |find /i /v "%SystemRoot%" |findstr /i /v "!qt!" >"%result%" && (
  chcp 1251>NUL& cmd /a /c set/p=яю<NUL>.tmp& chcp 866>NUL& cmd /u /c type "%result%">>.tmp& chcp 1251>NUL& cmd /a /c type .tmp>"%result%"& del .tmp
  notepad "%result%"
) || (echo Ничего не найдено)
pause
(сохранять в кодировке ANSI)
 
Последнее редактирование:
Сверху Снизу