批量将文件移动到文件夹。文件夹的命名基于文件名

时间:2018-11-23 18:40:30

标签: batch-file batch-processing

试图找到可以做到这一点但没有运气的蝙蝠。由于我对批处理代码的了解非常有限,所以我不知道从哪里开始编辑类似的现有代码。

我在一个文件夹中有文件,如下所示:

    \\NAS\ART\1234.pdf
    \\NAS\ART\1235.ai
    \\NAS\ART\1236.eps

我想将这些文件移动到服务器上文件夹结构如下的另一个文件夹中:

\\NAS\Art\1234\Original\1234.pdf
\\NAS\Art\1235\Original\1235.ai
\\NAS\Art\1236\Original\1236.eps

它将把文件放到filenames文件夹的原始文件夹中。抱歉,这令人困惑。

我发现这很接近我想要的,但是减去了删除字符的作用。

@ECHO OFF
SETLOCAL
SET "sourcedir=U:\sourcedir"
SET "destdir=U:\destdir"
FOR /f "delims=" %%a IN (
 'dir /b /a-d "%sourcedir%\*.xml" '
 ) DO (
 FOR /f "tokens=1delims=_-" %%b IN ("%%a") DO (
  FOR /f "delims=" %%d IN (
  'dir /b /ad "%destdir%\*%%b*" '
  ) DO (
   ECHO(MOVE "%%a" "%destdir%\%%d\"
  )
 )
)

GOTO :EOF

1 个答案:

答案 0 :(得分:0)

您可以使用此批处理文件将\\NAS\ART\中的所有非隐藏文件移动到之前创建的合适子目录(如果该子目录尚不存在),并覆盖目标目录中的同名文件。

@echo off
for %%I in ("\\NAS\ART\*") do (
    if not "%%I" == "%~f0" (
        md "%%~dpnI\Original" 2>nul
        move /Y "%%I" "%%~dpnI\Original\"
    )
)

IF 条件可以避免将批处理文件也存储在目录\\NAS\ART\中,并且在绝对不可能的情况下可以将其删除。

要了解所使用的命令及其工作方式,请打开命令提示符窗口,在其中执行以下命令,并非常仔细地阅读每个命令显示的所有帮助页面。

  • echo /?
  • for /?
  • if /?
  • md /?
  • move /?

也请阅读有关Using Command Redirection Operators的Microsoft文章,以获取对2>nul的解释,该{{1}}用于禁止命令 MD 输出以处理 STDERR 的错误消息将该错误消息重定向到设备 NUL 上,以创建目录中已存在的文件。