Loops 使用带/P的集合时,循环被卡住
正如一些人可能知道的那样,我正在编写一个脚本来收集计算机的信息,以使这个过程非常快。不,我有点卡住了,因为我想把解码的结果写入一个文本文件,而不想用新行滥发信息。问题是,只要我想添加Loops 使用带/P的集合时,循环被卡住,loops,batch-file,variables,parameters,Loops,Batch File,Variables,Parameters,正如一些人可能知道的那样,我正在编写一个脚本来收集计算机的信息,以使这个过程非常快。不,我有点卡住了,因为我想把解码的结果写入一个文本文件,而不想用新行滥发信息。问题是,只要我想添加/p参数,它就会在第一轮解码后停止 @echo offsure set list=89 86 51 84 49 55 52 49 52 49 SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION FOR %%X IN (%list%) DO ( set /p tem
/p
参数,它就会在第一轮解码后停止
@echo offsure
set list=89 86 51 84 49 55 52 49 52 49
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
FOR %%X IN (%list%) DO (
set /p temp=%%~nX
cmd /c exit !temp:~0,7!
set temp2=!=exitcodeAscii!
echo !temp2!
) >> C:\TestConverters.txt
Echo. >> C:\TestConverters.txt
pause
这是我目前正在使用的源代码。如果我删除/p参数,它工作得非常好。因此,现在我实际上只是在尝试改进脚本中使用的测试结果,以便至少已经计算出这一点。
set/p temp=%%~nX
将要求用户输入名为temp
的变量,并提示%%~nX
。可能不是你想要的
我猜你想写!temp2代码>无换行符。
是的,有一个set/p
技巧可以这样做,但是a)您在错误的位置使用了它,b)您不希望用户输入某些内容(这将暂停您的脚本),而是从NUL
获取输入:
替换
echo !temp2!
与
set/p temp=%%~nX
将要求用户输入名为temp
的变量,并提示%%~nX
。可能不是你想要的
我猜你想写!temp2代码>无换行符。
是的,有一个set/p
技巧可以这样做,但是a)您在错误的位置使用了它,b)您不希望用户输入某些内容(这将暂停您的脚本),而是从NUL
获取输入:
替换
echo !temp2!
与
或者您可以试试这个
@echo off
set list=89 86 51 84 49 55 52 49 52 49
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
FOR %%X IN (%list%) DO (
set temp=%%~nX
cmd /c exit !temp:~0,7!
set temp2=!=exitcodeAscii!
<nul set /p =!temp2!
) >> C:\BACKUPS\TestConverters.txt
Echo. >> C:\BACKUPS\TestConverters.txt
pause
@echo关闭
集合列表=89 86 51 84 49 55 52 49
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
对于%%X IN(%list%)执行以下操作(
设置温度=%%~nX
命令/c退出!温度:~0,7!
设置temp2=!=exitcodescii!
>C:\BACKUPS\TestConverters.txt
Echo.>>C:\BACKUPS\TestConverters.txt
暂停
或者您可以试试这个
@echo off
set list=89 86 51 84 49 55 52 49 52 49
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
FOR %%X IN (%list%) DO (
set temp=%%~nX
cmd /c exit !temp:~0,7!
set temp2=!=exitcodeAscii!
<nul set /p =!temp2!
) >> C:\BACKUPS\TestConverters.txt
Echo. >> C:\BACKUPS\TestConverters.txt
pause
@echo关闭
集合列表=89 86 51 84 49 55 52 49
SETLOCAL ENABLEEXTENSIONS ENABLEDELAYEDEXPANSION
对于%%X IN(%list%)执行以下操作(
设置温度=%%~nX
命令/c退出!温度:~0,7!
设置temp2=!=exitcodescii!
>C:\BACKUPS\TestConverters.txt
Echo.>>C:\BACKUPS\TestConverters.txt
暂停
一个简单的例子,如果您真的不需要使用设置/p
:
@ECHO关闭
SETLOCAL ENABLEDELAYEDEXPANSION
设置“列表=89 86 51 84 49 55 52 49”
设置“变量=”
对于%%X IN(%list%)执行(CMD/C退出%%X
设置“variable=!variable!!=EXITCODEASCII!”)
如果定义了变量>“C:\TestConverters.txt”ECHO(%variable%
暂停
一个简单的例子,如果您真的不需要使用设置/p
:
@ECHO关闭
SETLOCAL ENABLEDELAYEDEXPANSION
设置“列表=89 86 51 84 49 55 52 49”
设置“变量=”
对于%%X IN(%list%)执行(CMD/C退出%%X
设置“variable=!variable!!=EXITCODEASCII!”)
如果定义了变量>“C:\TestConverters.txt”ECHO(%variable%
暂停
它有点臃肿,%%X
=%%~nX
=!temp!
=!temp:~0,7!
@DodgyCodeException:它是一个未记录的内部变量,将errorlevel转换为ASCII(列在)它有点臃肿,%%X
=%%~nX
=!temp!
=!temp:~0,7!
@DodgyCodeException:它是一个未记录的内部变量,将errorlevel转换为ASCII(列在)可能比用set/p
方法写每个字符都要快。这不是速度问题,而是功能问题。如果它对我来说工作得很好,那么我很高兴。因此,我没有任何必要让它更快。它可能只会快1-10毫秒,这并不是什么大问题h、 对于1000万行或1000万个值,我似乎不需要这样做。@M.Stephen,速度不是问题,但在可行的情况下,效率应该是问题。Stephans point应该读到我的建议可能更有效。我首先对你的问题进行了评论,Stephan的回答基于我的评论,但暗示了我后来的回答可能更快。你决定忽略所有这些,而接受他的答案,这当然是你的感言。我认为你在四天后在我完美的答案下争论他的观点没有任何好处,同时继续忽略我所做的贡献!可能先写一行,然后一次就写,比写每一行更快用set/p
方法拉克特。这不是速度的问题,而是功能的问题。如果它对我来说工作得很好,那么我很高兴。所以我没有任何必要让它更快。它可能只会快1-10毫秒,这其实不算多。这不像我需要为1000万行或值这样做。@M.Stephen,s撒尿不是问题,但在可行的情况下,效率应该是问题。Stephans point应该读到我的建议可能更有效。我首先对你的问题进行了评论,Stephan的回答基于我的评论,但暗示我后来的回答可能更快。你决定忽略所有这些,转而接受他的回答,这当然是你的感言。四天后,在我完美的回答下,我认为你争论他的观点没有任何好处,同时继续忽略我的贡献!老兄,非常感谢。现在我只需要过滤掉var“列表”中的信息然后我终于完成了最终脚本的设置。真的非常感谢。如果我能为你做点什么,请告诉我。还有很好的解释。:-)伙计,非常感谢。现在我只需要过滤掉var“列表”中的信息然后,我终于完成了最终脚本的设置。非常感谢。如果我能为您做些什么,请告诉我。还有很好的解释。:-)