【问题标题】:Append folder name to file name and move file using DOS batch将文件夹名称附加到文件名并使用 DOS 批处理移动文件
【发布时间】:2015-01-16 04:10:20
【问题描述】:

有这样的文件夹结构:

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

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

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

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

【问题讨论】:

  • 这样的东西是我喜欢 cygwin 的原因。一旦你去 bash - 你永远不会回去

标签: windows file batch-file


【解决方案1】:
@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 命令仅用于测试目的ECHOed。 验证命令正确后,将ECHO(MOVE 更改为MOVE 以实际移动文件。附加&gt;nul 以禁止报告消息(例如1 file moved

【讨论】:

  • 谢谢,效果很好。对于当前时间,我使用了 SET "datetime=%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2% %time:~6,2%"
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-03-25
  • 1970-01-01
  • 2017-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多