我已经完成了我的批处理文件的99%的工作,现在我正面临最后的障碍,似乎并不想消失。这是当前的脚本:
@echo off
SET SPT4="C:\Testfolder\Test.Screen.txt"
SET SPT6="C:\Testfolder\Test.Screen.Temp.txt"
Type %SPT4% | Findstr "SerialNumberID= UserFriendlyName=" > C:\Testfolder\Temp.txt
Echo Screenmodel: > %SPT6%
for /f "delims=" %%x in (C:\Testfolder\Temp.txt) DO (
echo %%x
::Processing the gained informations.
set SN1=%%x
echo %SN1%
set "list=%SN1: =%"
echo %list%
set "list=%x:{= %"
set "list=%list:}= %"
set "list=%list:SerialNumberID= %"
set "list=%list:UserFriendlyName= %"
Echo %list%
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
(
FOR %%y IN (%list%) DO (
cmd /c exit %%y
<nul set /p =!=exitcodeAscii!
) >> %SPT6%
)
Echo. >> %SPT6%
)
del C:\Testfolder\Temp.txt
timeout 10 /nobreak > nul
该脚本首先定义变量,并使用另一个文件中提供的屏幕信息过滤出一个文件,所以我最后只保存了Temp.txt中保存的4行。
以下是文件“ Temp.txt”中的信息
SerialNumberID = {89,86,51,84,49,55,52,49,52,49,0,0,0,0,0,0}
UserFriendlyName = {66,49,57,45,54,32,76,69,68,0,0,0,0}
SerialNumberID = {53,90,48,57,54,55,51,52,78,66,0,0,0,0,0,0}
UserFriendlyName = {69,65,50,52,52,87,77,105,0,0,0,0,0}
脚本本身运行良好,但我需要删除所有不必要的字符,例如“ = {}”。因此,为了这样做,我想将信息传递到var %list%
,但是当我想回显它时,我只会收到一条消息,例如
禁用回声/禁用回声命令
最终输出也不是一个清晰的名字,而是一个空行。
当我用%% x替换%list时,整个过程都按预期工作,但是由于“ = {}”,所有行中的第一个字母都丢失了
有人可以给我一个解决方案的想法吗?我知道这可能很小,我可能会丢失。
解决方案:
我必须用以下内容替换代码的中间部分:
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
(
for /f "delims=" %%x in (C:\Testfolder\Temp.txt) DO (
::Processing the gained informations.
set SN1=%%x
echo !SN1!
set "list=!SN1!"
echo 1 !list!
set "list=!list:}= !"
echo 2 !list!
set "list=!list:{= !"
echo 3 !list!
set "list=!list:SerialNumberID= !"
echo 4 !list!
set "list=!list:UserFriendlyName= !"
echo 5 !list!
echo.
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
(
FOR %%y IN (!list!) DO (
cmd /c exit %%y
<nul set /p =!=exitcodeAscii!
) >> %SPT6%
)
Echo. >> %SPT6%
)
)
所以实际的问题是我试图使用%var%之类的变量代替!var!