将文件夹名称附加到文件名并使用DOS批处理移动文件

时间:2015-01-16 04:10:21

标签: windows file batch-file

有这样的文件夹结构:

rootfolder\subfolder1\file1.txt
rootfolder\subfolder1\fileA.txt
rootfolder\subfolderX\file2.txt
rootfolder\subfolderX\fileC.txt

需要将foldername附加到文件名并包含当前日期时间。然后将重命名的文件移动到rootfolder,如下所示:

rootfolder\subfolder1_file1_<datetime>.txt
rootfolder\subfolder1_fileA_<datetime>.txt
rootfolder\subfolderX_file2_<datetime>.txt
rootfolder\subfolderX_fileC_<datetime>.txt

有没有人知道可以做到这一点的脚本?非常感谢!

1 个答案:

答案 0 :(得分:0)

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "datetime=%date:/=-%%time::=.%"
PUSHD "%sourcedir%"
FOR /f "delims=" %%a IN (
  'dir /b /ad "%sourcedir%\*"'
  ) DO (
 FOR /f "delims=" %%d IN ('dir /b/a-d ".\%%a\*.txt" 2^>nul') DO (
  ECHO(move "%sourcedir%\%%a\%%d" "%sourcedir%\%%a_%%~nd_%datetime%%%~xd"
 )
)
popd

GOTO :EOF

您需要更改sourcedir的设置以适合您的具体情况。

我选择只过滤.txt个文件 - 调整文件掩码以适应。

我不知道您的日期格式或您期望的日期格式。您没有说明是否要插入current日期/时间或file's日期/时间。假设current

为了测试目的,所需的MOVE命令仅为ECHO在您确认命令正确后,将ECHO(MOVE更改为MOVE以实际移动文件。附加>nul以取消报告消息(例如1 file moved