是否可以使用Robocopy从文件名子字符串中自动复制和制作目录?
我的意思是我有这样的文件。LAJ00306130201004626.rc
前8个字符是控制号(LAJ00306
=控制号)这将是文件夹的名称,其余是日期和时间(日期=130201)(时间=004626)。
LAJ00306130201004626.rcLAJ00306130202004626.rcLAJ00306130203004626.rcLAJ00307130201004626.rcLAJ00307130202004626.rc
我想从文件名中复制和创建文件夹,如下面所述,并在新文件夹中复制前面提到的文件。
LAJ00306
LAJ00307
如果有必要,我希望能澄清,请询问我更多信息
试试这个,查看输出并删除MD
和ROBOCOPY
之前的echo
s,如果它看起来不错:
@ECHO OFF &SETLOCAL ENABLEDELAYEDEXPANSION
SET "sourcefolder=."
SET "targetfolder=X:data"
CD /d "%sourcefolder%"
FOR %%a IN (*.rc) DO (
SET "fname=%%a"
SET "folder=!fname:~0,8!"
SET "$!folder!=1"
)
FOR /f "delims=$=" %%a IN ('set "$"') DO (
ECHO MD "%targetfolder%%%a" 2>nul
ECHO ROBOCOPY "%sourcefolder%" "%targetfolder%%%a" "%%a*.rc"
)
为文件夹树设置sourcefolder
和targetfolder
。
试试这个:
@echo off
pushd "c:source folder"
setlocal enabledelayedexpansion
for %%a in (*.rc) do (
set "name=%%a"
robocopy "%cd%" "%%a" "D:target directory!name:~0,8!"
)
popd
您的问题答案是:
pushd "drive:path"
使该位置成为当前工作目录popd
恢复最后一个工作目录setlocal enabledelayedexpansion
允许您使用!变量语法。
如果你的2000个文件在一个文件夹中,那么它应该可以工作——但首先在一些示例文件上测试它,这样你就可以看到它是如何工作的。
@ECHO OFF
SETLOCAL
SET "sourcedir=."
SET "destdir=c:destdir"
FOR /f "tokens=1*delims=_" %%i IN (
'dir /b /a-d "%sourcedir%*_*."'
) DO XCOPY /b "%sourcedir%%%i_%%j" "%destdir%%%i"
GOTO :EOF
这样就可以完成所描述的任务。当然,您需要设置相应的源目录和目标目录。将>nul
添加到XCOPY
行的末尾,以抑制"复制的"消息。