使用Robocopy从文件名子串中自动复制和制作目录是否可行?
我的意思是我有这样的文件。 LAJ00306130201004626.rc
前8个字符是控制号(LAJ00306
=控制号)这将是文件夹的名称,其余的是日期和时间(日期= 130201)(时间= 004626)。
LAJ00306130201004626.rc LAJ00306130202004626.rc LAJ00306130203004626.rc LAJ00307130201004626.rc LAJ00307130202004626.rc
我想从文件名中复制和创建文件夹,如下所示,并在新文件夹中复制之前提到的文件。
LAJ00306
LAJ00307
我希望在必要时明确要求我提供更多信息
答案 0 :(得分:2)
尝试此操作,查看输出并删除echo
和MD
之前的ROBOCOPY
,如果它看起来不错:
@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
。
答案 1 :(得分: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
允许您使用!变量更改和使用循环中的变量!语法。
如果您的2000个文件位于单个文件夹中,那么它应该可以工作 - 但首先在一些示例文件上测试它,以便您可以看到它是如何工作的。
答案 2 :(得分: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
这应该完成描述的任务。当然,您需要设置源目录和目标目录。将>nul
添加到XCOPY
行的末尾以禁止“复制”消息。