【发布时间】:2016-02-16 04:01:01
【问题描述】:
下面的脚本提示输入文件夹路径。然后脚本将遍历文件夹以创建文件。
例如,输入路径 C:\aa。该脚本应循环通过 C:\aa\fol1 到 C:\aa\fol5 以创建文件。
例如,当前文件夹 C:\aa 为空。
Input C:\aa.
Expected output would be
C:\ -- aa -- fol1\aa1\bb1\cc1\dd1\00-1 with each subfolder has 20 files.
-- fol2\aa2\bb2\cc2\dd2\00-2 with each subfolder has 20 files.
-- fol3\aa3\bb3\cc3\dd3\00-3 with each subfolder has 20 files.
-- fol4\aa4\bb4\cc4\dd4\00-4 with each subfolder has 20 files.
-- fol5\aa5\bb5\cc5\dd5\00-5 with each subfolder has 20 files.
@echo off
setlocal enableDelayedExpansion
set /p folder="Enter path: (C:\aa) : "
set /p action="Choose an action (Modify for M , Add for A , Delete for D , Rename for R , F for create Folder and files ): "
pause
2>NUL CALL :CASE_%action% # jump to :CASE_M, :CASE_A, etc.
IF ERRORLEVEL 1 CALL :DEFAULT_CASE # if label doesn't exist
ECHO Done.
EXIT /B
:CASE_F
FOR /L %%A IN (1,1,5) DO (
mkdir "%folder%"\fol"%%A"\aa"%%A"\bb"%%A"\cc"%%A"\dd"%%A"\00-"%%A"
)
timeout 11 > NUL
FOR /L %%A IN (1,1,5) DO (
mkdir "%folder%"\fol"%%A"\uu"%%A"\bb"%%A"\cc"%%A"\dd"%%A"\00-"%%A"
)
timeout 11 > NUL
echo end of create folder
pause
FOR /L %%A IN (1,1,5) DO (
echo %folder%\fol%%A
set pfolderpath=%folder%\fol%%A
pause
for /D /r "%pfolderpath%" %%F in (*) do (
echo LALA
FOR /L %%B IN (1,1,20) DO (
@echo this is new line > "%%F"\bear"%%B".txt
)
)
)
GOTO END_CASE
:END_CASE
VER > NUL # reset ERRORLEVEL
GOTO :EOF # return from CALL
以上脚本成功创建了 fol1\aa1\bb1\cc1\dd1\00-1 到 fol5 的子文件夹。只是它似乎无法循环到 fol1 到 fol5 来创建文件。如果我使用绝对路径 C:\aa\fol1 对 pfolderpath 进行硬编码,则该脚本运行良好。我猜它的 for 循环有问题,但一无所知。请指教。
【问题讨论】:
-
实际上我的脚本成功创建了子文件夹,只是它不会进入 FOR /L %%A IN (1,1,5) DO ( echo %folder%\fol%%A set pfolderpath=%folder%\fol%%A pause for /D /r "%pfolderpath%" %%F in (*) do ( echo LALA FOR /L %%B IN (1,1,20) DO (@ echo this is new line > "%%F"\bear"%%B".txt ) ) ) 在子文件夹中创建文件。
标签: windows loops batch-file for-loop