2015-06-09 2 views
0

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

echo on 
for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined MyDate set MyDate=%%x 
set today=%MyDate:~0,4%-%MyDate:~4,2%-%MyDate:~6,2% 


set "_year=%MyDate:~0,4%" 
set "_month=%MyDate:~4,2%" 
set "_day=%MyDate:~6,2%" 

REN C:\Users\xyz125\Documents\Erics's Docs\scripts\"test file (20150112).txt" "test file (%_year%%_month%%_day%).txt" 

pause 

ответ

0

Попробуйте dir/b | Findstr /r "([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])"

Это приводит к следующему файлу this (20150609)something.txt и папка также содержит файл с именем test(1234)else.txt, который не найден, поскольку регулярное выражение ищет 8 цифр цифр не 4. Эта модель была бы реж/b | Findstr/r "([0-9] [0-9] [0-9] [0-9])" `

Это сообщение помогло Piped Variable Into FINDSTR w/ Regular Expressions and Escaped Double Quotes, вы могли бы сделать что-то подобное и задать переменную со строкой, которую вы хотите, чтобы файл был переименован.

-Editing добавить примечание о конкатенации строк see here

Также см ответы здесь Generate unique file name with timestamp in batch script

+0

Im не знакомые с рег выразить. Посмотрите что-нибудь близко к этому: echo ON для/f "skip = 1" %% x in ('wmic os get localdatetime') сделать, если не определено MyDate set MyDate = %% x set today =% MyDate: ~ 0,4% -% MyDate: ~ 4,2% -% MyDate: ~ 6,2% set "_year =% MyDate: ~ 0,4%" set "_month =% MyDate: ~ 4,2 % " set" _day =% MyDate: ~ 6,2% " C: \ Пакет | Findstr/r "([0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9] [0-9])« REN «C: \ Batch \ | Findstr/r (% _year %% _ month %% _ day%). Txt« rem^ pause – EJohnson

+0

Пожалуйста, отредактируйте этот вопрос с обновлением кода, пытаясь понять смысл кода в комментарий - это не весело. – user4317867

0
@4317867. Sorry about that. For some reason I could not edit the code while pasting a response comment. Im not familiar with reg express. Would it look anything close to this: 



echo ON 
for /f "skip=1" %%x in ('wmic os get localdatetime') do if not defined MyDate set MyDate=%%x 
set today=%MyDate:~0,4%-%MyDate:~4,2%-%MyDate:~6,2% 


set "_year=%MyDate:~0,4%" 
set "_month=%MyDate:~4,2%" 
set "_day=%MyDate:~6,2%" 

C:\Batch | Findstr /r "([0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9])" 

REN "C:\Batch\ | Findstr /r (%_year%%_month%%_day%).txt" 

rem^

pause