0

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

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

LAJ00306130201004626.rc
LAJ00306130202004626.rc
LAJ00306130203004626.rc
LAJ00307130201004626.rc
LAJ00307130202004626.rc

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

LAJ00306
LAJ00307

我希望清楚,如有必要,请向我询问更多信息

4

3 回答 3

2

试试这个,看看输出并删除echo之前的 sMDROBOCOPY,如果它看起来不错:

@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

于 2013-07-22T20:15:28.357 回答
1

尝试这个:

@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允许您在循环中更改和使用变量,使用 !variable! 句法。

如果您的 2000 个文件位于一个文件夹中,那么它应该可以工作 - 但首先在一些示例文件上对其进行测试,以便您了解它是如何工作的。

于 2013-07-22T23:36:57.850 回答
0
@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

这应该完成所描述的任务。当然,您需要设置适合的源目录和目标目录。添加>nulXCOPY行尾以禁止“复制”消息。

于 2013-07-22T18:53:25.577 回答