根据文件名的一部分创建子文件夹名称,并使用Robocopy复制文件



是否可以使用Robocopy从文件名子字符串中自动复制和制作目录?

我的意思是我有这样的文件。LAJ00306130201004626.rc前8个字符控制号LAJ00306=控制号)这将是文件夹的名称,其余是日期和时间(日期=130201)(时间=004626)。

LAJ00306130201004626.rcLAJ00306130202004626.rcLAJ00306130203004626.rcLAJ00307130201004626.rcLAJ00307130202004626.rc

我想从文件名中复制和创建文件夹,如下面所述,并在新文件夹中复制前面提到的文件。

LAJ00306
LAJ00307

如果有必要,我希望能澄清,请询问我更多信息

试试这个,查看输出并删除MDROBOCOPY之前的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"
)

为文件夹树设置sourcefoldertargetfolder

试试这个:

@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行的末尾,以抑制"复制的"消息。

相关内容

  • 没有找到相关文章

最新更新