2015-11-25 11 views
0

Я нашел базовый код для этого здесь уже и использовал его для перемещения, а затем переименовал файл, где я знал имя файла. Однако теперь я хотел бы переместить файл, где имя файла является параметром.Пакетный файл для переименования файла, когда имя файла является переменной

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

Echo Off 
SET SiteName=%~1 
SET FileDate=%~2 
SET File=%SiteName%%FileDate% 


IF Not EXIST C:\Users\Administrator\Documents\~Withdrawal_Report\%File% GOTO DoNothing 

copy C:\Users\Administrator\Documents\~Withdrawal_Report\%File% C:\Users\Administrator\Documents\~Withdrawal_Report_Archive\%File% 


ren C:\Users\Administrator\Documents\~Withdrawal_Report_Archive\%File% %SiteName%-%date:~4,2%-%date:~7,2%-%date:~10,4%[email protected]_%time:~0,2%h%time:~3,2%m%time:~6,2%s%.csv 
ren C:\Users\Administrator\Documents\~Withdrawal_Report_Archive\%File% %SiteName%-%date:~4,2%-%date:~7,2%-%date:~10,4%[email protected]_%time:~1,1%h%time:~3,2%m%time:~6,2%s%.csv 


del C:\Users\Administrator\Documents\~Withdrawal_Report\%File% 
pause 

:DoNothing 
Exit 
+0

Вы пытаетесь переименовать один и тот же файл дважды, что, конечно же, не может работать (при первом переименовании путь источника больше не существует); так что вы на самом деле хотите сделать? – aschipfl

ответ

0

Попробуйте использовать двойные кавычки, например:

Echo Off 
SET "SiteName=%~1" 
SET "FileDate=%~2" 
SET "File=%SiteName%%FileDate%" 


IF Not EXIST "C:\Users\Administrator\Documents\~Withdrawal_Report\%File%" GOTO DoNothing 

copy "C:\Users\Administrator\Documents\~Withdrawal_Report\%File%" "C:\Users\Administrator\Documents\~Withdrawal_Report_Archive\%File%" 

ren "C:\Users\Administrator\Documents\~Withdrawal_Report_Archive\%File%" "%SiteName%-%date:~4,2%-%date:~7,2%-%date:~10,4%[email protected]_%time:~0,2%h%time:~3,2%m%time:~6,2%s%.csv" 
ren "C:\Users\Administrator\Documents\~Withdrawal_Report_Archive\%File%" "%SiteName%-%date:~4,2%-%date:~7,2%-%date:~10,4%[email protected]_%time:~1,1%h%time:~3,2%m%time:~6,2%s%.csv" 


del "C:\Users\Administrator\Documents\~Withdrawal_Report\%File%" 
pause 

:DoNothing 
Exit 

Кроме того, вы пытаетесь переименовать тот же файл дважды, насколько я могу судить. Раньше это работало?

+0

Вы также должны использовать '' '' '' выражения '' '' '' '' 'SiteName =% ~ 1" ', потому что в противном случае несколько специальных символов в аргументах могут вызвать проблемы ... – aschipfl

+0

Вы правы, отредактировано –

+0

Спасибо, Деннис и ашипф! Добавлены кавычки по всему пути к файлу. Полное переименование файла в два раза предназначено для метки времени с цифрой/двойной цифрой (час). Одно из переименований не будет выполнено, это будет один час цифра, и наоборот для двузначного часа. Это базовый код, где он объясняется. http://stackoverflow.com/questions/4984391/cmd-line-rename-file-with-date-and-time –

Смежные вопросы