首页 > 解决方案 > 批处理文件代码同时移动和重命名文件

问题描述

我编写了以下代码,将所有文件从一个文件夹移动到另一个文件夹。但是当我运行它时,我得到一个错误。文件名、目录名或卷标语法不正确。

SET today=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%%TIME:~9,2%
SET today=%today: =0%
if exist D\Instrument_Files (
    Move "C:\Users\Public\Documents\Logs\Test Exports\*.*" "D\Instrument_Files\*_%DateNtime%.csv"
) 
pause

有人可以帮忙吗?谢谢

标签: batch-file

解决方案


移动命令只能有一个目的地。如果它是一个目录,则可以列出多个源文件。但是,在您的情况下,您想要重命名每个文件,因此每个文件都需要一个移动命令。这意味着您需要一个循环:

SET today=%DATE:~10,4%%DATE:~4,2%%DATE:~7,2%%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%%TIME:~9,2%
SET today=%today: =0%
if exist "D:\Instrument_Files" (
    for %%I in ("C:\Users\Public\Documents\Logs\Test Exports\*.*") do move %%I "D:\Instrument_Files\%%~nI_%today%.csv"
) 
pause

%%I整个文件规范在哪里,%%~nI只是文件名本身。


推荐阅读