入力ディレクトリと出力ディレクトリがあります。
私の主な目標は、特定の拡張子を持つ入力ディレクトリ内のすべてのファイルを配列に読み取ることです。
次に、出力ディレクトリの下の入力ディレクトリに各ファイルのディレクトリのツリーを作成したいと思います。
例えば:
入力ディレクトリ =C:\Input
出力ディレクトリ =C:\Output
入力ディレクトリ ツリー:
C:\Input\1\first.bat
C:\Input\2\3\second.bat
C:\Input\2\3\4\third.bat
C:\Input\3\1\forth.bat
ファイルとフォルダーが空になった出力ツリーが次のようになることを願っています。
出力ディレクトリ ツリー:
C:\Output\1\
C:\Output\2\3\
C:\Output\2\3\4\
C:\Output\3\1\
次のコードがあります。
ファイルの配列を作成する場合:
set k=0
for /f "eol=: delims=" %%F in ('dir /b /s %InputDir%\*.%StandardExtension%') do (
set /a k+=1
set filesArray[!k!]=%%F
)
set n=%k%
各ファイルのディレクトリを作成します。
for /l %%i in (1,1,%n%) do (
set CurrentFile=!filesArray[%%i]!
call :CheckAndCreateDirectory %SequencesDir% !CurrentFile! %OutputDir% UpdatedOutputDir
)
最後に、ディレクトリを作成する関数:
:CheckAndCreateDirectory
set IntputDir=%1
set CurrentDir=%~dp2
set OutputDir=%3
set UpdatedOutputDir=!CurrentDir:%IntputDir%=%OutputDir%!
set %4=%UpdatedOutputDir%
if not exist %UpdatedOutputDir% (^
echo. & ^
mkdir %UpdatedOutputDir% & ^
echo.)
問題は次のとおりです。入力(および出力も推測)に「特殊」文字などが含まれていない場合&
、コードは機能します。ただし、その場合、ディレクトリ ツリーは作成されません。
作業入力:C:\Input_Dir
入力が機能していません:C:\Input&Dir
何か案は?