进一步阅读:

进一步阅读:

我有大约 600 个文件,我想根据文件名开头的数字将它们移动到不同的子文件夹中。

例如

5--US-L.jpg -> subfolder /5/5--US-L.jpg

7--US-M.jpg -> subfolder /7/7--US-M.jpg

34--A3-RAW.jpg -> subfolder /34/34--A3-RAW.jpg

87--US-L.jpg -> subfolder /87/87--US-L.jpg

127--US-L.jpg -> subfolder /127/127--US-L.jpg

162--US-L.jpg -> subfolder /162/162--US-L.jpg

它的编号从1162。尝试将之前的所有内容移动"--"到指定的子文件夹中,但没有成功。

答案1

会是这样的吗?您必须将文件所在的文件夹拖放到批处理中...

@echo off

if /i exist "%~1" (if /i not exist "%~1\" exit) else (exit)
pushd "%~1"
for /f "Delims=" %%a in ('dir /b *.*') do For /f "delims=-" %%b in ("%%~a") do call :MoveF "%%~a" "%%~b"
pause
exit

:MoveF
IF not exist "%~2" md "%~2"
move "%~1" "%~2"
goto :EOF

在此处输入图片描述

答案2

  • 要从 1 个文件移动到 162 个文件:

在命令行中:

@for /l %l in (1 1 162)do 2>nul @md .\"%~l" & @move "%~l--*.jpg" .\"%~l"\ >nul

在批处理文件中:

@echo off

cd /d "d:\Target\Folder"

for /l %%L in (1 1 162
)do md .\"%%~L" & move "%%~L--*.jpg" .\"%%~L"\ >nul

  • 如果存在文件,则将文件从 1 移动到 999:

在命令行中:

@for /l %l in (1 1 999)do @if exist "%~l--*.jpg" 2>nul @md .\"%~l"\ & @move "%~l--*.jpg" .\"%~l"\ >nul

在批处理文件中:

@echo off

cd /d "d:\Target\Folder"

for /l %%L in (1 1 999)do if exist "%%~L--*.jpg" 2>nul (
    mkdir .\"%%~L"\ & move "%%~L--*.jpg" .\"%%~L"\ )>nul

使用拖放或预设路径到目标文件夹:

@echo off && setlocal

(cd/d "%~1" || cd/d "Z:\SU-2022\Q1699812" 
) >nul 2>&1 || ( endlocal & goto :eof ) 

for /l %%L in (1 1 999)do if exist "%%~L--*.jpg" 2>nul (
    mkdir .\"%%~L"\ & move "%%~L--*.jpg" .\"%%~L"\ ) >nul

进一步阅读:

相关内容