SET 在批处理文件中的循环内不起作用

时间:2021-05-07 09:27:54

标签: windows batch-file variables

我想使用批处理脚本根据文件扩展名和文件名迭代文件夹中的所有文件。

我有以下代码来获取文件扩展名,并且可以用 const productData = async () => { const { data } = await axios.get("http://127.0.0.1:5000/product", config); data && setProduct(data); }; 回显它,但是当我尝试将其定义为 %%~xa 时,输出仅返回为 file_extension< /p>

谁能告诉我怎么做?

ECHO is off.

1 个答案:

答案 0 :(得分:0)

cmd 不同于 perlC#

cmd 实际上使用 = 前后的空格作为变量名和值的一部分。 目前,您的代码 SET file_extension = %%~xa 将创建一个带有尾随空格 !File_extension ! 和值中前导空格的变量。 .txt

所以你必须在 = 之前或之后设置它,而不是空格。最好还在变量和值周围使用双引号,以确保值后没有任何意外的空格。例如,set var=val 将正确创建 %var% 变量,但会创建错误值 val

在解释完所有内容之后,这里是您当前代码的固定版本:

@echo off
setlocal EnableDelayedExpansion
 
for  %%a in ("folder\*") do (
       
    echo Processing file = %%~nxa
    echo Processing file extension %%~xa
    echo Processing file name = %%~na
    set "file_extension=%%~xa"
    echo !file_extension!
    echo %%~xa
)  
pause
相关问题