例如: 我有很多文件,在一个目录中命名如下:
stuff1.jpg stuff1 (1).jpg stuff1 (2).jpg stuff2.jpg stuff2 (1).jpg stuff2 (2).jpg ...and etc.
我希望批处理脚本将stuff1*
个文件移动到名为stuff1
的子文件夹; stuff2*
个文件到子文件夹,名为stuff2
等。
我找到了这个批处理脚本:
@echo off
for /f "delims=" %%a in ('dir /b') do (
if not "%%~fa"=="%~f0" (
md "%%~na" 2>nul
if exist "%%a" move "%%~na.*" "%%~na"
)
)
但它为stuff1 (1).jpg
和stuff1 (2).jpg
文件
修改: stuff1
和stuff2
只是示例,它们可以是任何单字字符串。抱歉我的英语不好
答案 0 :(得分:2)
纯批次:
@ECHO OFF &SETLOCAL
SET "startfolder=test"
CD /d %startfolder%
FOR %%a IN (*.jpg) DO (
FOR /f "delims=. " %%b IN ("%%~a") DO (
ECHO MD "%%~b" 2>nul
ECHO MOVE "%%~a" "%%~b"
)
)
@ECHO OFF &SETLOCAL
SET "startfolder=test"
CD /d %startfolder%
FOR %%a IN (*.jpg) DO (
FOR /f %%b IN ('echo %%~a^|sed -r "s/(\w+).*/\1/"') DO (
ECHO MD "%%~b" 2>nul
ECHO MOVE "%%~a" "%%~b"
)
)
..输出:
>dir /b test stuff1 (1).jpg stuff1.jpg stuff10 (1).jpg stuff10.jpg stuff2 (1).jpg stuff2.jpg stuff20 (1).jpg stuff20.jpg >script MD "stuff1" MOVE "stuff1 (1).jpg" "stuff1" MD "stuff1" MOVE "stuff1.jpg" "stuff1" MD "stuff10" MOVE "stuff10 (1).jpg" "stuff10" MD "stuff10" MOVE "stuff10.jpg" "stuff10" MD "stuff2" MOVE "stuff2 (1).jpg" "stuff2" MD "stuff2" MOVE "stuff2.jpg" "stuff2" MD "stuff20" MOVE "stuff20 (1).jpg" "stuff20" MD "stuff20" MOVE "stuff20.jpg" "stuff20"
如果看起来不错,请查看您的输出并在echo
和MD
之前移除Move
。
答案 1 :(得分:1)
如果“单字符串”表示“第一个点或空格之前的字符串”,则下面的批处理文件会这样做。如果您的“单字字符串”可能被其他字符分隔,则将它们包含在FOR命令的"delims=...
部分中(将空格留在最后的位置)。
@echo off
for %%a in (*.*) do (
for /F "delims=. " %%b in ("%%a") do (
if not exist "%%b\" md "%%b"
if exist "%%a" move "%%b*.*" "%%b"
)
)