[英]Batch script for making new dirs, named as part of filename and move the files in
例如:我在一個目錄中有很多文件,像這樣命名:
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
只是示例,它們可以是任何一個單詞的字符串。 對不起,我英語不好
純批次:
@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"
)
)
Windows的sed示例:
@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"
請查看您的輸出,如果看起來不錯,請在MD
和Move
之前刪除echo
。
如果對於“單字字符串”是指“第一個點或空格之前的字符串”,則下面的批處理文件將執行此操作。 如果您的“單字字符串”可能被其他字符分隔,則將它們包括在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"
)
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.