1

У меня есть пакетный скрипт (на основе этого ответа):

@echo off
for /f "delims=" %%x in ('dir /b /s D:\v\*.*') do (
 echo %%x>>C:\Users\TechMadmin\Desktop\scripts\a.txt
)
move /y C:\Users\TechMadmin\Desktop\scripts\a.txt C:\Users\TechMadmin\Desktop\scripts\b.txt

Выходной код партии

D:\v\a.csv
D:\v\b.txt
D:\v\c.xml

Теперь мое требование состоит в том, чтобы добавить метку времени, т.е.: %date:~4,2%%date:~7,2%%date:~10,4%_%time:~0,2%%time:~3,2%%time:~6,2% к выходным файлам.

Пример: мой выходной файл - D:\v\a.csv, но теперь он должен быть

D:\v\a_%date:~4,2%%date:~7,2%%date:~10,4%_%time:~0,2%%time:~3,2%%time:~6,2%.csv
D:\v\b_%date:~4,2%%date:~7,2%%date:~10,4%_%time:~0,2%%time:~3,2%%time:~6,2%.txt
D:\v\c%date:~4,2%%date:~7,2%%date:~10,4%_%time:~0,2%%time:~3,2%%time:~6,2%.xml

1 ответ1

1

Мое требование состоит в том, чтобы добавить метку времени

Используйте следующий пакетный файл.

@echo off
set datetime=%date:~4,2%%date:~7,2%%date:~10,4%_%time:~0,2%%time:~3,2%%time:~6,2%
for /f "delims=" %%x in ('dir /b /s D:\v\*.*') do (
  echo %%~dpnx_%datetime%%%~xx>>C:\Users\TechMadmin\Desktop\scripts\a.txt
)
move /y C:\Users\TechMadmin\Desktop\scripts\a.txt C:\Users\TechMadmin\Desktop\scripts\b.txt

Заметки:

  • %%~dpnx - полное имя файла, включая диск и путь, но исключая расширение (например, D:\v\a).
  • _ символ подчеркивания.
  • %datetime% - значение строки даты и времени
  • %%~xx - расширение файла (пример .csv).
  • >> это оператор перенаправления.

  • Не полностью протестирован.

    Вы используете зависимую от локали функцию для получения компонентов даты (которые не соответствуют моему системному формату даты)

    • Упрощенный пример работает как ожидалось.

Если вы хотите независимое от локали решение для компонентов даты и времени, см. Мой ответ. Напечатайте datetime в Windows cmd для требуемого кода.


Дальнейшее чтение

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