Вложено для цикла с оператором if в командном файле - PullRequest
0 голосов
/ 22 марта 2012

Я знаю, что этот вопрос уже мог обсуждаться тысячи раз, но я не знаю, что я делаю неправильно!

У меня есть следующий скрипт bat-файла, который пытается выполнить дамп памяти на основе PID всех текущих процессов, соответствующих переменной %PROCNAME%. Кажется, он выполняет то, что мне нужно, до того момента, когда я повторяю %DUMFILENAME%. Здесь он печатает PID переменной PID предыдущей итерации ...

например. Если у меня работает 3 экземпляра блокнота (с PID 1, 2, 3) и я запускаю следующую bat. Я получаю следующий вывод в командной строке:

"Current PID is 1"

C:\Documents and Settings\userme\Local Settings\Application Data\notepad\notepad.exe_Thu 03222012204843.02.dmp

"Current PID is 2"

C:\Documents and Settings\userme\Local Settings\Application Data\notepad\notepad.exe_1_Thu 03222012204843.02.dmp

"Current PID is 3"

C:\Documents and Settings\userme\Local Settings\Application Data\notepad\notepad.exe_2_Thu 03222012204843.02.dmp

Мой скрипт летучей мыши:

@echo off
SETLOCAL EnableDelayedExpansion
SET PROCNAME=notepad.exe
FOR /F "tokens=1 delims=," %%A in ('tasklist /FI "IMAGENAME eq %PROCNAME%" /FO LIST') DO (
      set "maintoken=%%A"
      Call:InnerToken !maintoken!)
pause
goto :end
:InnerToken
set innertoken=%1
IF "%innertoken%"=="PID:" (
      FOR /F "tokens=1,2 delims=:" %%B in ("%innertoken%") DO (
         set "res=%~n2"
         echo "Current PID is !res!"
         SET "DUMPFILENAME=%USERPROFILE%\Local Settings\Application Data\Notepad\%PROCNAME%_!res!_%date:/=%%time::=%.dmp"
         echo %DUMPFILENAME%
         )
      )
:end

Любая помощь будет принята с благодарностью ...

1 Ответ

2 голосов
/ 22 марта 2012

Вместо этого используйте

echo !DUMPFILENAME!

.

Что меня удивляет, поскольку вы, похоже, уже знаете, что вам нужно задерживать расширение при установке и использовании переменных в блоках.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...