我有一个输入目录和一个输出目录。
我的主要目标是将输入目录中具有特定扩展名的所有文件读入一个数组。
然后我希望在输出目录下的输入目录中创建每个文件的目录树。
例如:
输入目录 =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
有任何想法吗?