SET /P
и перенаправления входного потока или с помощью FOR /F
.start
и утилиты tasklist
, taskkill
и timeout
примерно так:@start microsoft-edge:https://yoomoney.ru/moneylandia/lootboxes
@timeout /t 5 /nobreak>nul
@for /f %%1 in ('tasklist^|find /i "msedge"') do @taskkill /im %%1 /f
@echo %~nx0 completed!
@pause
%0\..\TeamViewer_Host.msi
(кажется, может не работать во внутренних подпрограммах, вызываемых командой call :метка
); %0
не следует заключать в кавычки, так как он их может уже содержать (но, с другой стороны, возможны нежелательные последствия, если он содержит спецсимволы вне кавычек…), но можно использовать кавычки в оставшейся части пути: %0\..\"TeamViewer Host.msi"
."%~dp0\TeamViewer_Host.msi"
(должна быть включена расширенная обработка команд, что обычно имеет место по умолчанию). Вероятно можно с помощью for
for
с ключом /f
обработать вывод команды set
без параметров, получив имена всех (почти) определённых переменных среды (частей выводимых строк до знака =
: delims==
):for /f "delims==" %v in ('set') do set "%v="
%
перед переменной цикла надо удвоить). где мне найти информацию по данному вопросу
set /?
if /?
…for %%F in (*.pdf) do (
set "old_name=%%~nF"
set "new_name=%%~nF"
call :SUB
)
exit /b
:SUB
set "ch=%new_name:~0,1%"
if "%ch%" geq "0" if "%ch%" leq "9" (
set "new_name=%new_name:~1%"
goto SUB
)
if not "%new_name%" == "%old_name%" ren "%old_name%.pdf" "%new_name%.*"
exit /b
setlocal enabledelayedexpansion
set /a first_index = 14
set /a last_index = first_index
:LOOP
if exist %last_index%.json (
set /a last_index += 1
goto LOOP
)
set /a last_index -= 1
for /l %%i in (!last_index!, -1, %first_index%) do (
set /a j = %%i + 1
ren %%i.json !j!.json
)
endlocal
echo on
rem %*
%*
, включая возможные специальные символы.for /f %%L in ('findstr "^it\.version\.dev= ^who\.is\.cat=" X.txt') do set "%%L"
unzip way\archive_%it.version.dev%_%who.is.cat%.zip -d \way\to\folder
findstr
(хотя при желании можно было бы обойтись только внутренними командами CMD): в файле X.txt ищутся строки, начинающиеся с it.version.dev=
и who.is.cat=
и используются в команде set
(точнее, часть строки до первого пробела или знака табуляции, если они есть в найденной строке, но это, если надо, несложно изменить): часть строки до =
становится именем переменной среды, а часть после — её значением. cd
и pushd
/popd
. Кроме того сама команда start
поддерживает для этого ключ /d
. Возможно, сработаетstart /d "C:\Users\valinor\Desktop\hihi\dist\main" main.exe --dir='D:\ttt'
/?
— «Ответ легко ищется поисковиком».)for /L %%i IN (1,1,10000000000) do call :doschtasks %%i
set FN=%1
schtasks /query
для получения имён текущих заданий:for /f "usebackq delims=" %%L in (`schtasks /query /fo csv /nh^|find "Opera GX scheduled Autoupdate "`) do call :sub %%L
exit /b
:sub
schtasks /delete /tn %1 /f
forfiles
— внешняя утилита, которая не везде установлена, и, честно говоря, не знаю зачем нужна, так как, по крайней мере в большинстве случаев, всё что можно сделать ей, можно сделать внутренней командой for
, — советую изучить справку:for /?
И сохранять весь результат по папкам нужно в один файл, а не в несколько как у меня.
comand1>file.txt
comand2>file.txt
(
comand1
comand2
)>file.txt
>>
вместо >
для дозаписи в файл без его очистки:comand1>file.txt
comand2>>file.txt
ping -invalid-arg && goto GOOD || goto BAD
&&
/||
. CD
без ключа /D
; пример:cd h:\a\b\c
h:d\e.doc
будет раскрыт в h:\a\b\c\d\e.doc
, а h:..\f.doc
— в h:\a\b\f.doc
.=D:
(D
— буква диска); и простой командой SET
стандартного обработчика командной строки Windows NT не выводятся, но если они определены, их можно увидеть в выводе командыSET ""
(или даже SET "
): To display undocumented system variables:— ss64.com/nt/set.html, см. также Rob van der Woude — Dynamic Environment Variables.
SET "