我有以下代码:
@echo off
setlocal disableDelayedExpansion
set "src=C:\test"
set "dst=C:\test2"
set "search=test"
for /r "%src%" %%F in (*%search%*) do (
set "full=%%~fF"
set "name=%%~nxF"
setlocal enableDelayedExpansion
copy "!full!" "%dst%\!name:%search%=test - %date:~0,2%-%date:~3,2%-%date:~6,4%__%time:~0,2%-%time:~3,2%-%time:~6,2%!"
endlocal
)
此代码的作用是从1个位置复制文件并将其放在其他位置并更改名称并将日期/时间放在文件名中。
我正在寻找的是文件名和时间背后也是复制文件的位置。所以像这样:
文件名-10-03-2014-15:58:45-C:\测试\ TEST1 \ TESTFILE.TXT
所以我可以在文件名中看到日期时间和旧路径。
希望你们能帮忙。
亲切的问候,
Kaluh
答案 0 :(得分:1)
@echo off
setlocal disableDelayedExpansion
set "src=C:\sourcedir"
set "dst=C:\destdir"
set "search=jpg"
for /r "%src%" %%F in (*%search%*) do (
set "full=%%~fF"
set "name=%%~nxF"
setlocal ENABLEDELAYEDEXPANSION
SET "appendix=!full::=-!"
SET "appendix=!appendix:\=_!"
ECHO copy "!full!" "%dst%\!name:%search%=test - %date:~0,2%-%date:~3,2%-%date:~6,4%__%time:~0,2%-%time:~3,2%-%time:~6,2%!-!appendix!"
endlocal
)
GOTO :EOF
我更改了搜索模式,源和目标目录以适合我的系统。
您需要为:
和\
指定自己的替代字符,这些字符不能出现在文件名中。
为了测试目的,所需的COPY命令仅为ECHO
。 在您确认命令正确后,将ECHO COPY
更改为COPY
以实际复制文件。