batch-file - 批处理 : How to append string in FOR loop

标签 batch-file for-loop append concatenation

我在 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/

相关文章:

python - 为 python 脚本创建 BAT 文件

javascript - 数组中内置Symbol.asyncIterator

c - 在c中使用带循环的字符串

jquery - 在将图像 append 到 DOM/浏览器之前,如何获取图像的宽度/高度?

python - 在二维数组内追加/连接数组

windows - MD 和 MKDIR 批处理命令有什么区别?

batch-file - 如何从批处理文件中确定分支名称

php - 在新命令提示符下执行命令

objective-c - 哪个代码块是 'better' ?

javascript - 为什么我不能 append 一个元素,删除它,然后再次 append 相同的元素?