Use Dos commands to copy file and preserve date in file name -
i'm having problem trying re-create , rename file using dos commands. have file of format myfile20130218 , want re-create , rename some_other_file_20130218.
i know can utilize copy source dest i'm having problem how isolate date , preserve it. cannot guarantee date today's date ruled out, source file same name.
i can run either series of commands or batch script, thing that having problem with, after find match need copy, using myfile????????, how can file names pull dates off them?
edit: clarification looking @ files in known directory, above, know format of file name, , checking specific directory it. process checks directory connectdirect file watcher, when file found matching myfile20130218 can fire off commands, don't know how check directory , name of file present.
something should work:
%oldname:~-8% extracts lastly 8 characters %oldname% appended new filename.
update: if can identify file external programme , phone call batch script file name
copyfile.cmd c:\path\to\myfile20130218 you this:
set oldname=%~nx1 set newname=%~dp1some_other_file_%oldname:~-8% re-create "%~f1" "%newname%" update 2: if know folder , format phone call script folder
copyfile.cmd c:\folder and this:
@echo off setlocal enabledelayedexpansion /f %%f in ( 'dir /b "%~f1" ^| findstr /r "myfile[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]$"' ) ( set oldname=%~f1\%%f set newname=%~f1\my_other_name_!oldname:~-8! re-create "!oldname!" "!newname!" ) endlocal edit: script breakdown.
setlocal enabledelayedexpansion enables variable expansion within loops , conditionals. for /f %%f in ('...') executes command between single quotes , loops on output of command. dir /b "%~f1" lists content of given directory (%~f1 expands total path of first argument passed script) in simple mode (no header, no summary). findstr /r "myfile[0-9]...[0-9]$" filters input strings end substring "myfile" followed 8 digits. circumflex before pipe (^|) escapes pipe, because otherwise take precedence on for command, split for command in half, resulting in invalid command-line. set oldname=%~f1\%%f assign total path matching file variable oldname. set newname=%~f1\my_other_name_!oldname:~-8! assign total path new filename ("my_other_name_" followed trailing 8 digits oldname) variable newname. copy "!oldname!" "!newname!" don't need explain this, i? batch-file copy cmd
No comments:
Post a Comment