BatchFile 搜索特定文件扩展名并将其移动到特定文件夹

BatchFile 搜索特定文件扩展名并将其移动到特定文件夹

这是我的文件夹结构,我想运行一个批处理文件来搜索所有父文件夹并将现有的 .dat 文件移动到子文件夹 x

我需要有人帮助我 :) 非常感谢

- NETWORK FOLDER ( WHERE I WANT THE BACTCHFILE TO BE LAUNCHED  )

    - PARENT FOLDER 1
         -subfolder 1
         -subfolder 2
         -subfolder 3
         -subfolder x
        files_name.dat

    - PARENT FOLDER 2
         -subfolder 1
         -subfolder 2
         -subfolder 3
         -subfolder x
        files_name.dat

    - PARENT FOLDER 3
         -subfolder 1
         -subfolder 2
         -subfolder 3
         -subfolder x
        files_name.dat

我现在还是编码新手,只有相当基础的代码。只有将 .bat 放在父文件夹中时,此代码才有效。我尝试在网络文件夹中运行它,但不起作用。

@echo off
SetLocal EnableDelayedExpansion
for /F "delims=" %%a in ('dir /b *.dat') do (
  move  /y "%%a" subfolder x\
)

答案1

可能是这样的。它将 dat 文件复制到名为 DatFiles 的文件夹,并重命名子文件夹中可能重复的名称。

@echo off
chcp 1252> Nul

set Source=\\Lenovo\Test\Source
set Destination=\\Lenovo\Test\Source\DatFiles
set Type=.dat

If /i not exist "%Destination%" md "%Destination%"

for /f %%a in ('dir /b /s "%Source%\*%Type%" ^| find /i /v "%Destination%\"') do (
if /i exist "%Destination%\%%~nxa" (
set "File=%%~na"
set "Extension=%%~xa"
set "FullPath=%%a"
call :Rename
)
if /i not exist "%Destination%\%%~nxa" move "%%a" "%Destination%"
)
exit

:Rename
for /l %%b in (1,1,100) do if /i not exist "%Destination%\%File%(%%b)%Extension%" move "%FullPath%" "%Destination%\%File%(%%b)%Extension%" & goto :EOF
goto :EOF

在此处输入图片描述

相关内容