2017-04-24 15 views
0

このコードを使用して、親フォルダ内の各サブフォルダ(E:\ "New folder")から新しいコピー先フォルダ(E: \「新しいフォルダ」)\サンプル[それは素晴らしい作品]:ファイルが指定された場合はバッチスクリプト:コピーしたファイルの名前を元のフォルダに変更する

@echo off 
setlocal EnableDelayedExpansion 
cd E:\"New folder" 
set t=0 
for /d %%i in (*) do (
    cd "%%i" 
    set /A t+=1 
    set n[!t!]=0 
    for %%f in (*.jpeg *.jpg *.gif *.bmp *.png) do (
     set /A n[!t!]+=1 
     set "file[!n!]=%%f" 
    ) 
    set /A "rand=(n[!t!]*%random%)/32768+1" 
    copy "!file[%rand%]!" E:\samples\"New folder" 
    cd.. 
) 
pause 

をしかし、私のようなので、その起源フォルダに応じてコピーされたファイルを再命名されている必要がありDC20140912.jpg "Italy2014.jpg"という名前のサブフォルダに由来するので、 "Rome2015.jpg"という名前に変更するために、 "Rome2015"という名前のサブフォルダに由来するファイル "Italy2014.jpg"に名前を変更する必要があります。

各サブフォルダから1つのファイルしかコピーされないため、ファイル名の衝突の危険はありません。拡張子は、あなたがそれらを抽出したり、別々にそれらを格納する必要があります異なるので

+0

悲しいことに、あなたの質問の中でもう一つ説明したように、このルーチンはうまくいくように見えますが、実際には失敗しません。 'for/d'コマンドは'%random% 'を乱数で'%rand% 'を* nothing *に置き換えます。あなたはファイルを 'n [t]'にカウントしていますが、 'n'がセットされていないので'!n! 'は* nothing *に置き換えられますので、ファイル名は' file [] 'に割り当てられ、選択されたグループの名前。 'copy'コマンドは' file [] 'をコピーします - 常に同じファイル - ディレクトリで最後に選択されたファイルです。確かに、毎回** a **ファイルを選択しますが、常に同じファイルを選択します。 – Magoo

+0

ありがとう!この変更(@ LotPings)を行った、素晴らしい作品 – Amos

答えて

0
  • を助けてください。
  • このバッチ店舗あまりにもそれら:

@echo off 
setlocal EnableDelayedExpansion 
Set "Base=C:\Test" 
Set "Dest=Q:\Test\2017-04\24" 
Cd /D "%Base%" 
set t=0 
for /d %%i in (*) do (
    cd "%%i" 
    set /A "n=0" 
    for %%f in (*.jpeg *.jpg *.gif *.bmp *.png) do (
     set /A "n+=1" 
     set "file[!n!]=%%f" 
     set "ext[!n!]=%%~xf" 
    ) 
    If !n! gtr 0 (
     set /A "rand=(!n!*!random!)/32768+1" 
     Call Set "file=%%file[!rand!]%%" 
     Call Set "ext=%%ext[!rand!]%%" 
     Echo rand=!rand! n=!n! copy "!file!" "%Dest%\%%~ni!ext!" 
     copy "!file!" "%Dest%\%%~ni!ext!" >Nul 2>&1 
    ) 
    cd.. 
) 

編集使用する必要がランダム!お電話番号

+0

私は各ファイルのために別々にスクリプトを実行する場合はどうしたらいいですか? (* .jpegを除くすべてを削除する)、それはどのように見えるでしょうか? – Amos

+0

現在処理されているフォルダパスは '%% i'です。' %%〜ni'は最後のものだけです。修正拡張子では、ファイル名は '%%〜ni.jpg'です – LotPings

+0

外側のループのためにいくつかの欠陥がありました。 (ランダムを使用する必要があります) – LotPings

関連する問題