2017-08-18 22 views
2

サブフォルダ内に複数のイメージがありますが、いくつのフォルダがあるのか​​わかりません。私はすべてのフォルダに列挙された名前を見つけるためにスクリプトをバッチして、コピー先のフォルダに画像をコピーしたい。以下のスクリプトを試しましたが、ファイルが見つかりませんでした。エラーです。すべてのサブフォルダ内のファイルを見つけるためのバッチスクリプト

@echo off 

rem Find files and copy files 

setlocal EnableExtensions EnableDelayedExpansion 

set "SourceBaseFolder=D:\System backup\picture batch file\Test\15oct2015" 
set "TargetBaseFolder=C:\OutputFolder" 

if not exist "%SourceBaseFolder%\*" (
    echo %~nx0: There is no folder %SourceBaseFolder% 
    set "ErrorCount=1" 
    goto HaltOnError 
) 

cd /D "%SourceBaseFolder%" 

if not exist "FileNames.txt" (
    echo %~nx0: There is no file %SourceBaseFolder%\FileNames.txt 
    set "ErrorCount=1" 
    goto HaltOnError 
) 

set "ErrorCount=0" 
for /F "usebackq delims=" %%N in ("FileNames.txt") do (
    for /R %%J in ("%%N*") do (
     set "FilePath=%%~dpJ" 
     if "!FilePath:%TargetBaseFolder%=!" == "!FilePath!" (
      set "TargetPath=%TargetBaseFolder%\!FilePath:%SourceBaseFolder%\=!" 
      md "!TargetPath!" 2>nul 
      if exist "!TargetPath!\*" (
       echo Copying file %%~fJ 
       copy /Y "%%~fJ" "!TargetPath!" >nul 
      ) else (
       set /A ErrorCount+=1 
       echo Failed to create directory !TargetPath! 
      ) 
     ) 
    ) 
) 

:HaltOnError 
if %ErrorCount% NEQ 0 (
    echo. 
    pause 
) 
endlocal 

いずれか1つでこの問題を解決できますか?前もって感謝します。

+1

必要に応じて簡単に、バッチファイル内でそのようなファイルを生成することができます。 SRC_FOLDER = C:\ Source "、" DIR%SRC_FOLDER%/ A:D/B "を" DIR "に設定するようにSRC_FOLDER =" C:\ Source "を設定します。 DIR%SRC_FOLDER%\ "%% D \ %% F"/A:D/B''を "DIR"%SRC_FOLDER%\ %% D \ %% F "/ A :D/B''と同様のすべて。あなたはフォルダー名 '' c:\ source "' _yes、quotes_で検索しています。 – elzooilogico

+0

ありがとう@elzooilogico画像の 'FileNames.txt'のファイルを検索しています –

+0

@elzooilogicoコードを更新してください –

答えて

0

あなたが仕事に取得しようとしているソリューションは、過度に複雑なようだ

私は次のような何かがあなたが

FOR /F %%G IN ('dir /a-d /s /b "D:\System backup\picture batch file\Test\15oct2015"^|findstr /I /E /G:"D:\System backup\picture batch file\Test\15oct2015\FileNames.txt"') DO (
copy "%%G" "C:\OutputFolder" 
) 

は、ファイル名の一致が正確であるすべてのファイル名を確認したい何をすべきと考えていますfilenames.txtの前にバックスラッシュを付ける必要があります。

\filename1.file 
\filename2.file 

あなたの引用の戦略は適切ではない

関連する問題