2016-09-16 11 views
0

私はあなたの助けが必要です。以下のバッチスクリプトは、同じファイル名をコピー元とコピー先の異なるフォルダにコピーして貼り付けます。ソースフォルダには、A.txt、A.xml、B.txt、B.xml、C.txt、C.xmlの8つのファイルがあります。実行すると、スクリプトは
A.txt、A.xml
B.txt、B.xml
をコピー先フォルダにコピーする必要があります。同じファイルをコピーするためのバッチスクリプト

以下のスクリプトは、同じ名前のファイルを検索してコピーできますが、コピーを制限できませんでした。

set MaxLimit=2 
for %%i in ("E:\Source\*.xml") do (
if exist "%%~dpni.txt" (
    copy /y "%%~i" "E:\destination" 
     copy /y "%%~dpni.OCL" "E:\destination" 
if %%i==%MaxLimit% exit /b 0 
) 
) 
+0

をあなたの限界を比較あなたの質問を編集し、コード 'であなたの質問のコードセクションを配置することによって、私を扱いなさいsample' '{}'のように見える – Jonas

+0

真、編集は承認待ちです。十分な担当者がいる場合は、それを承認してください。 –

+0

ファイルはランダムにコピーされるはずですか?単一のファイルを1回だけコピーするという意図はありますか?どのようにしてコピーを実行していないのであれば、以前にコピーされたファイルを知るためにスクリプトをどのように考えていますか? – Compo

答えて

0

setlocalで遅延拡張を有効にする必要があります。次にカウンタを定義し、ループ内でカウンタをインクリメントします。その後、私はあなたのコードから癌を得た(ループ内で変数を評価するために!counter!を使用して)カウンターで

set MaxLimit=2 
setlocal enabledelayedexpansion 
set counter=0 
for %%i in ("E:\Source\*.xml") do (
if exist "%%~dpni.txt" (
    copy /y "%%~i" "E:\destination" 
     copy /y "%%~dpni.OCL" "E:\destination" 
set /a counter+=1 
if !counter!==%MaxLimit% exit /b 0 
) 
) 
関連する問題