batch-file - 如何在 Windows 上的批处理脚本中附加/连接变量
问题描述
我是批处理编码的新手。所以在基础上苦苦挣扎。我想连接 2 个变量,然后在第三个变量中打印其连接结果。
批号
@echo off
SET basePath = C:\Users\Documents\
echo basePath - %basePath%
SET fileName = T_test
echo fileName - %fileName%
SET extension= .csv
echo extension - %extension%
SET finalvalue = %basePath%%fileName%%extension%
echo finalvalue - %finalvalue%
pause
实际输出
basePath -
fileName -
extension - .csv
finalvalue -
预期产出
basePath - C:\Users\Documents\
fileName - T_test
extension - .csv
finalvalue - C:\Users\Documents\T_test.csv
*****更新******
由于 fileName 变量有多个用逗号分隔的值。我想一个一个地迭代它
Batch Code
@echo off
SET basePath=C:\Users\Documents\
echo basePath - %basePath%
SET fileName=T_test,T_test2,T_test3
echo fileName - %fileName%
SET extension=.csv
echo extension - %extension%
for %%f in (%fileName%) do (
SET completepath=%basePath%%%f%extension%
echo completepath - %completepath%
)
pause
实际输出
basePath - C:\Users\Documents\
fileName - T_test,T_test2,T_test3
extension - .csv
completepath -
completepath -
completepath -
预期产出
basePath - C:\Users\Documents\
fileName - T_test,T_test2,T_test3
extension - .csv
completepath - C:\Users\Documents\T_test.csv
completepath - C:\Users\Documents\T_test2.csv
completepath - C:\Users\Documents\T_test3.csv
代码更新 2:
@echo off
setlocal EnableDelayedExpansion
SET basePath=C:\Users\Documents\
echo basePath - %basePath%
SET fileName=T_test,T_test2,T_test3
echo fileName - %fileName%
SET extension=.csv
echo extension - %extension%
for %%f in (%fileName%) do (
:: below echo prints expected value i.e. 1st iteration - T_Test, 2nd iteration - T_test2, 3rd iteration - T_test3
echo current file name - %%f
SET completepath=%basePath%!f!%extension%
:: below echo prints nothing, expected value 1st iteration - C:\Users\Documents\T_test.csv, 2nd iteration - C:\Users\Documents\T_test2.csv
echo completepath - %completepath%
)
pause
解决方案
这是您的“代码更新 2”示例,包含推荐的Set
语法和适当使用延迟扩展。
@Echo Off
SetLocal DisableDelayedExpansion
Set "basePath=%USERPROFILE%\Documents"
Echo basePath - %basePath%
Set "fileName=T_test,T_test2,T_test3"
Echo fileName - %fileName%
Set "extension=.csv"
Echo extension - %extension%
For %%A In (%fileName%) Do (
Echo current file name - %%A
Set "completepath=%basePath%\%%A%extension%"
SetLocal EnableDelayedExpansion
Echo completepath - !completepath!
EndLocal
)
Pause
推荐阅读
- javascript - ReactJs 中父项下出现多个字段
- xamarin.forms - 无法将 PopupPage 添加到 Visual Studio 中的项目
- python - 如何在 Python 中格式化 txt 文件
- apiconnect - 在 IBM Api connect 中,无法将响应 Content-Type 更改为“application/json; 字符集=UTF-8”
- reactjs - 当单击侧边栏项目时,想要传递一些道具来检查隐藏或显示组件中的某些按钮,核心 ui 中的侧边栏菜单 reactjs
- java - @PreAuthorize 注解无法解析变量
- android - UnmetDependencyException:缺少 Crashlytics 构建 ID
- c++ - 预期的 ';' 在 qt 中的声明结束时
- python - 如何将数据输入我的神经网络?
- arrays - 为什么我得到 TypeError: _this.data.forEach is not a function