我想使用批处理脚本根据文件扩展名和文件名迭代文件夹中的所有文件。
我有以下代码来获取文件扩展名,并且可以用 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.
答案 0 :(得分:0)
cmd
不同于 perl
、C#
等
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