Если все, что вы пытаетесь сделать, это подсчитать, сколько раз называется CMD скрипт, вы можете просто добавить один символ в файл каждый раз, когда его работает, а не возится с оценкой выражения каждый раз при запуске скрипта. Это также имеет преимущество, заключающееся в том, что сценарий выполняется быстрее, так как анализ счета перемещается в другом месте.
Файл счетчика каждый раз расширяется на один байт, поэтому следите, если вы вызываете его поистине большое количество раз, так как файл будет расширяться. Но даже, называя его один раз в секунду, 1G-файл будет начисляться только через 30 лет.
В верхней части сценария, просто положить:
set >>countfile.txt <nul: /p x=X
Это просто добавляет символ X
к концу файла countfile.txt
каждый раз, когда скрипт называется. Он использует команду «set/p
» с перенаправлением ввода/вывода, что является единственным способом, которым я знаю, чтобы получить символ без CR/LF после него (например, UNIX «echo -n
»).
Чтобы получить количество вызовов на сегодняшний день, вы можете использовать модификатор переменной окружения размера файла, как в следующем сценарии (я ожидаю, что это будет сделано реже, чем запуск скрипта, поэтому лучше разместить хрюкать работа здесь [на самом деле, это не так много хрюкать работы, так как это не считая символов, а он получает информацию непосредственно из записи каталога]):
@echo off
goto :main
:getsize
echo %~z1
goto :eof
:main
setlocal enableextensions enabledelayedexpansion
call :getsize countfile.txt
endlocal
Для сброса счетчика, используйте следующий чрезвычайно сложная команда (я подумываю о патентовании):
del countfile.txt
Еще одна вещь, которую я предлагаю - вам не нужно префикс каждой команды с «@
», чтобы предотвратить эхо, вы можете просто поставить «@echo off
» в верхней части вашего скрипта для глобального не-эха. Если вы хотите выборочно повторять некоторые команды, просто игнорируйте этот абзац.
Добро пожаловать. Для этого случая есть возможность принять ответ :) – Joey