移動の多数のファイルを一つのディレクトリの複数のディレクトリ

StackOverflow https://stackoverflow.com/questions/2541887

  •  23-09-2019
  •  | 
  •  

質問

いを作る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%をインクリメントされていません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top