我在 FOR 循环中 append 字符串时遇到问题。
我想为数组中存储的每个名称创建子文件夹。 子文件夹属于一个由用户指定名称的文件夹。
例如,如果我的数组中有以下名称: - 文件夹1 - 文件夹2 - 文件夹3
我想要文件夹:
C:\MyFolder\文件夹 1 C:\我的文件夹\文件夹 2 C:\MyFolder\文件夹 3
如前所述,“MyFolder”名称由用户在命令行中键入。
这是代码:
@echo off
@break off
@title Generate Billing Subfolders
@color 0a
@cls
setlocal EnableDelayedExpansion
SET "batch_path=%~dp0"
SET "first_folder=01. Folder1"
SET "second_folder=02. Folder2"
SET "third_folder=03. Folder3"
:: Create the new Working Data folder
SET /p new_folder_name= Enter Directory Name:
SET "full_path=%batch_path%%new_folder_name%"
ECHO Working...
IF NOT EXIST ("%full_path%") (
MKDIR %new_folder_name%
IF "!errorlevel!" EQU "0" (
ECHO Folder created successfully.
) ELSE (
ECHO Error while creating folder.
)
) ELSE (
ECHO Folder already exists.
)
SET "folders_list="%first_folder%" "%second_folder%" "%third_folder%""
FOR %%f in (%folders_list%) DO (
:: Displays the folder name in array correctly
ECHO %%f
:: Displays ECHO is off. Why?
CALL SET "updated_full_path=%full_path%\%%f"
ECHO %updated_full_path%
PAUSE
)
PAUSE
EXIT
最佳答案
既然你已经有了 enabled delayed expansion :
setlocal EnableDelayedExpansion
....
FOR %%f in (%folders_list%) DO (
:: Displays the folder name in array correctly
ECHO %%f
:: Displays ECHO is off. Why?
SET "updated_full_path=!full_path!\%%f"
ECHO !updated_full_path!
PAUSE
)
PAUSE
关于batch-file - 批处理 : How to append string in FOR loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46279767/