Додайте дату-час, щоб скопіювати файл, використовуючи пакетний пакет Windows


0

Я думав, що це буде просто, але здається, що це більш виклик, ніж я думав.

Я хочу, щоб файл був скопійований і вставлений з доданим штампом часу. Я отримую штамп часу за допомогою цього коду:

set hournum=%time:~0,2%

if %hournum% gtr 9 (set timeback=_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%h%time:~3,2%m%time:~6,2%s) else (set timeback=_%date:~10,4%%date:~4,2%%date:~7,2%_0%time:~1,1%h%time:~3,2%m%time:~6,2%s)

Set FileAffected=%1
echo %FileAffected:~0,-1%%timeback%

Це зробить файл, FILE.TXT бути FILE.TXT_2015-03-05_11h56m32s

Але я, очевидно, хочу, щоб це було FILE_20150305_11h56m32s.TXT

Розширення файлу може бути будь-яким розширенням або будь-якою довжиною. Дякуємо за будь-яку допомогу.

EDIT: FileAffected передається з цитатами, тому я просто зняв їх з ~ 0, -1.

Я знайшов, що якщо я це роблю:

FOR /f %%i IN (%FileAffected%) DO (
ECHO filename=%%~fi
ECHO fileextension=%%~xi
)

Якщо я повторюю FileAffected, я отримую повне ім'я шляху з пробілами. Але якщо я використовую команду FOR / F, то ім'я файлу повертає все, що скорочується після пробілу. Навіть додавання додаткових лапок до змінної "% FileAffected" у команді "IN" все ще не виправляє її, а також не додає лапки навколо fi або xi.

Відповіді:


1

Як додати дату й час як суфікс до імені файлу?

Використовуйте такий пакетний файл:

@echo off
set hournum=%time:~0,2%
if %hournum% gtr 9 (set timeback=_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%h%time:~3,2%m%time:~6,2%s) else (set timeback=_%date:~10,4%%date:~4,2%%date:~7,2%_0%time:~1,1%h%time:~3,2%m%time:~6,2%s)
echo %~n1%timeback%%~x1

Вихід:

F:\test>test file.txt
file_3/01_18h07m40s.txt

Якщо ваше ім'я файлу містить пробіли, наприклад file with space.txt тоді потрібно дзвінка пакетний файл з " s навколо імені файлу, а саме:

F:\test>test "file with space.txt"
file with space_3/01_18h07m56s.txt

Розширення параметрів

%~n1 Розгорніть% 1 до файлу Ім'я без розширення файлу C: utils MyFile або якщо присутній лише шлях (без зворотної риски) - остання папка на цьому шляху.

%~x1 Розгорніть% 1 до файлу тільки розширення - .txt

Джерело Аргументи командного рядка (параметри)


Використання "Подвійних цитат"

Якщо один параметр містить пробіли, ви можете передавати його як один   елемент, що оточує в "котирування" - це добре працює для довгих імен файлів.

Якщо параметр використовується для подання назви файлу, подібного до цього:

MyBatch.cmd "C:\Program Files\My Data File.txt"

Ці параметри будуть:

% 0 = MyBatch

% 1 = "C: Файли програм: My Data File.txt"

Джерело Синтаксис: символи Escape, роздільники та цитати


Подальше читання


Примітка: %timeback% не включає рік для мене. я отримав _3/01_18h31m52s на моїй системі, де %date% є 15/03/2015
DavidPostill

Дякуємо, що знайшли час, щоб відповісти. Мені доведеться судити це пізніше, коли я отримаю шанс. Дивно, тому що у мене є така ж "% timeback%" змінна з іншою партією, що дає мені рік. Мені доведеться дивитися глибше.
HTWingNut

Дякуємо, що знайшли час на відповідь. Мені доведеться судити це пізніше, коли я отримаю шанс. Думаю, ваш формат дати є дд / мм / рррр, де в добрій США, де ми робимо все назад, це мм / дд / рік. Потрібно буде задуматися над тим, що трохи. i.imgur.com/WIKf6TE.jpg
HTWingNut
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.