Как изменить значение параметра в пакетном файле по дате? - PullRequest
0 голосов
/ 30 ноября 2011

Проблема заключается в следующем

Мне нужно извлечь журналы с сервера, для этого я создал файл «.bat» с именем «getServerLog.bat», и этот файл выполняет выборку самого файла журнала, который помещается на сервер. т.е. содержимое «getServerLog.bat» состоит из расположения на сервере, где хранится фактический файл журнала, но файл журнала на сервере имеет следующий формат имени «yyyy_mm_dd.stderrout.log», например 2011_11_30.stderrout.log для сегодняшнего файл и это имя генерируется автоматически, поэтому в файле bat "getServerLog.bat" я должен параметризировать имя, чтобы оно всегда получало последний файл. Для более точной информации вот содержимое файла bat

Пакет параметров "C: \ Program Files (x86) \ WinSCP \ WinSCP.exe" / console / command "при включении параметра" "подтвердите отключить" "открыть gtp: gtp@10.72. 141.68 "" get /home/gtp/installed/jetty-6.1.18/logs/2011_08_25.stderrout.log C: \ Users \ prpandey \ Desktop \ gtp.log "" exit "

Мне нужно параметризовать последнюю переменную 2011_08_25.stderrout.log, чтобы получить последнюю запись или журналы. Пожалуйста, помогите мне с этой проблемой.

Заранее спасибо.

Ответы [ 3 ]

1 голос
/ 30 ноября 2011

Даже если это кажется довольно простым, как уже показывал @Burrhus, разные форматы даты делают его очень сложным.

Альтернативный метод, использующий WMIC, показан в этом посте здесь в SO, Дата пакетного сценария в переменную

, попробуйте этот код

@ECHO OFF
FOR /F "skip=1 tokens=1-6" %%A IN ('WMIC Path Win32_LocalTime Get Day^,Hour^,Minute^,Month^,Second^,Year /Format:table') DO (
   SET FD=%%F_%%D_%%A
)
ECHO logs/%FD%.stderrout.log
0 голосов
/ 02 декабря 2011

В моей системе код Aacini завершается с ошибкой в ​​('DATE

. Если я изменяю его на (' echo.% DATE%> NUL '), он где-то завершается ошибкой (XP SP3). Некоторые пояснения, почему этот код должен работать независимотекущий формат даты системы будет потрясающим.

0 голосов
/ 30 ноября 2011

Согласно вашему формату даты - у меня датский yy-mm-dddd, вы можете сделать это следующим образом.

set fileDate=%date:~6,4%_%date:~3,2%_%date:~0,2%
"C:\Program Files (x86)\WinSCP\WinSCP.exe" /console /command "option batch on" "option confirm off" "open gtp:gtp@10.72.141.68" "get /home/gtp/installed/jetty-6.1.18/logs/%fileDate.stderrout.log C:\Users\prpandey\Desktop\gtp.log" "exit"

Конечно, это должно быть изменено в соответствии с форматом даты.

...