batch-file - for /f 循环连接参数
问题描述
@echo off
setlocal enableextensions enabledelayedexpansion
title Testing
color 4f
for /l %%x in (1,1,3) do (
rem This is working
set var1=%%x.extention
echo !var1!
for /f "tokens=2 delims==" %%a in (
'wmic datafile where "name='C:\\Windows\\System32\\notepad.exe'" get version /value') do (
::This is NOT working. WHy??
set var2=%%a.exention
)
echo !var2!
)
@pause
有人能帮助我吗?我正在尝试连接一些变量、for-loop
参数和字符串。麻烦是在循环参数的末尾得到一个字符串。.extention
in中的字符串首先set var2
显示.extension
字符串,而不是我想要的最后一个。
解决方案
问题是该wmic
命令的输出是 Unicode 文本,并且for /F
在将其转换为 ANSI 文本时遇到了问题,因此留下了一些孤立的回车字符,这让您的输出看起来很奇怪。您可以通过将批处理脚本的输出重定向到一个文件并通过十六进制查看它来证明这一点。编辑。
要解决此问题,请环绕另一个for /F
循环,如下所示:
for /F "delims=" %%b in ('
wmic DataFile where "Name='C:\\Windows\\System32\\notepad.exe'" get Version /VALUE
') do for /F "tokens=2 delims==" %%a in ("%%b") do (
echo(%%a.extension
)
注意:
不要::
在块或循环中使用 -style 注释,因为它们可能会导致意外行为;改为使用rem
。
推荐阅读
- r - 如何将 cson 文件读入 R
- python-3.x - 我需要设置一个for循环来点击几个链接,然后返回上一页
- angularjs - 标签输入未在引导模式中加载
- cordova - 将本机科尔多瓦插件添加到科尔多瓦项目时出现科尔多瓦错误
- matlab - 在matlab中将wrt排序为列值
- php - 为什么 PHP in_array 函数总是返回 true
- primefaces - Primefaces 时钟组件未按照时区属性值工作
- python - Django - Celery ValueError:无法解析相关模型 u'user.User'
- php - 找不到请求的 php 资源
- python-3.x - numpy.ndarray 对象不可调用