Saya ingin membuat subdirektori yang memiliki nama yang sama dengan file yang akan saya pindahkan, menggunakan file batch

0

Untuk nama file numerik yang diberikan, ada beberapa file yang ada di direktori. Direktori ini memiliki ratusan nama file numerik ini. Saya ingin membuat folder untuk masing-masing nama file numerik dan memindahkan file ke folder masing-masing. Saya mulai dengan:

  SET /P M= ENTER THE FOUR-DIGIT FILENAME
  MKDIR "%M%"
  MOVE "%M%.*" "%M%"

Ini berfungsi dengan baik tetapi saya harus memasukkan setiap nama file. Apakah ada cara untuk memungkinkan pengguna untuk memasukkan hanya dua angka pertama dari nama file sehingga saya dapat membuat folder dan memindahkan file, 100 sekaligus?

Phil
sumber

Jawaban:

0

Skrip berikutnya harus bekerja untuk Anda. Penjelasan dasar oleh rem komentar. Info lebih lanjut di for perintah loop , di substring , di ~ pengubah parameter dll.

@ECHO OFF >NUL
SET /P "M=ENTER THE TWO-DIGIT FILENAME "
    rem ensure 2-digit
set "M=00%M%"
    rem get last two characters
set "M=%M:~-2%"
for /L %%I in (0,1,9) do (
    for /L %%J in (0,1,9) do (
            rem here %M%%%I%%J = four-digit name
            rem exists at least one file starting with that 4 digits?
        if exist "%M%%%I%%J*.*" (
                rem create directory; error message throw away by 2>NUL
            MKDIR "%M%%%I%%J" 2>NUL
                rem move all files starting with 4 digits
                rem      but exclude directories by /a:-d
            for /F "tokens=*" %%G in ('dir /b /a:-d "%M%%%I%%J*.*"') do ( 
                MOVE "%%~G" "%M%%%I%%J\"
            )
        )
    )
)
JosefZ
sumber