1

Я использую машину Win 10 с разными пользователями, и все они могут использовать один и тот же файл bat.

В скриптах bat мне нужен временный файл с уникальным именем, состоящим из идентификатора для процесса, который в данный момент находится на этой машине. Таким образом, может быть несколько таких процессов одновременно.

В качестве имени файла нужно использовать C:\Windows\Temp\???. Txt.

Вопрос в том, что ??? должно быть.

1 ответ1

0

Ответ

Если вы хотите использовать PID cmd.exe, сделайте следующее:

title=uniqueTitle
for /f "tokens=2 USEBACKQ" %f IN (`tasklist /NH /FI "WINDOWTITLE eq uniqueTitle*"`) Do set ourPID=%f
i_view64.exe inputfile.jpg /info=%temp%\%ourPID%.txt

Я бред, потому что я не понял вопроса:

В контексте командного файла "текущий процесс под рукой" - это интерпретатор команд (conhost.exe или cmd.exe). Если вы хотите получить идентификатор процесса для i_view64.exe, вам необходимо сначала запустить его, а затем получить идентификатор процесса (что нетривиально). В вашем случае вы запрашиваете идентификатор процесса до его создания. Невозможно предсказать, что будет, когда вы вводите аргумент командной строки в процесс, так как он еще не запущен.

Если вы просто хотите получить уникальное временное имя файла в безопасном и надежном месте, вам следует проверить этот вопрос:

https://stackoverflow.com/questions/27802376/create-unique-file-name-windows-batch

Есть ряд предлагаемых решений.

Обычно вы используете% TEMP% для получения временного местоположения в системе. Затем вы генерируете свое имя файла.

что-то вроде этого может работать для вас:

%temp%\%username%-%date%-%random%.txt

Отрегулируйте по мере необходимости. Каждая из этих переменных раскрывается, чтобы создать полный путь к файлу.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .