簡體   English   中英

用於制作新目錄的批處理腳本,作為文件名的一部分命名並在其中移動文件

[英]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).jpgstuff1 (2).jpg文件創建單獨的目錄

編輯: stuff1stuff2只是示例,它們可以是任何一個單詞的字符串。 對不起,我英語不好

純批次:

@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"

請查看您的輸出,如果看起來不錯,請在MDMove之前刪除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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM