質問
いを作るWindowsバッチのスクリプトへの移動は約2,000のファイルを分割しない10のファイル/フォルダにまとめた。試みた作バッチスクリプトの書式本当にヘッシュ-バンディ准興味を持っていました。こちらはなんとい
@echo off
:: Config parameters
set /a groupsize = 10
:: initial counter, everytime counter is 1, we create new folder
set /a n = 1
:: folder counter
set /a nf = 1
for %%f in (*.txt) do (
:: if counter is 1, create new folder
if %n% == 1 (
md folder%nf%
set /a n += 1
)
:: move file into folder
mv -Y %%f folder%nf%\%%f
:: reset counter if larger than group size
if %n% == %groupsize% (
set /a n = 1
) else (
set /a n += 1
)
)
pause
基本的にどこのスクリプトなループを通じています。txtファイルのディレクトリです。するための新しいディレクトリに移動でき10のファイルとディレクトリ、そして新しいフォルダが再び動きも10ファイルとディレクトリです。しかし、私はこの問題の n
変数は増加のループ?思いのほかのエラーがもらCMDウィンドウが閉じっていても pause
.手や指針を評価した。
解決
数んでいることを知る必要があり:
SETLOCAL ENABLEDELAYEDEXPANSION
は、からだの変化変数を変更した値を単一の先頭にブロックです。SET /?
のコマンドラインにするという。検索のインターネットのためこの期間だよ。- の場所を利用したい
!nf!
形式変数の関係で遅れた。 - としてghostdog74、すなincrementing
%nf%
. - 私は初期化され
nf
0の代わりに1.このように、フォルダ番号を移動したいファイルと同じフォルダの数だけ作成されます。コードを作成しますfolderX、その値X、そのファイルを移動しますX+1. - ただし、使用
MOVE
移動ファイルMV
は有効ではありません。
このバッチファイルの作品---してください。また少量のファイルです。
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
:: Config parameters
SET groupsize=10
:: initial counter, everytime counter is 1, we create new folder
SET n=1
:: folder counter
SET nf=0
FOR %%f IN (*.txt) DO (
:: if counter is 1, create new folder
IF !n!==1 (
SET /A nf+=1
MD folder!nf!
)
:: move file into folder
MOVE /Y "%%f" folder!nf!
:: reset counter if larger than group size
IF !n!==!groupsize! (
SET n=1
) ELSE (
SET /A n+=1
)
)
ENDLOCAL
PAUSE
他のヒント
あなたは%nf%
をインクリメントされていません。
所属していません StackOverflow