@echo off
set myvar5=
if "%1"=="" goto otherthingy
set myvar4=__HAHFDsdfasdfHADF__
set myvar1=%1%myvar4%
:thingy
set myvar2=%myvar1:~0,1%
set myvar5=%myvar2%%myvar5%
set myvar1=%myvar1:~1%
if not "%myvar1%"=="%myvar4%" goto thingy
echo %myvar5%
:otherthingy
使用给定的批处理文件,批处理文件有什么作用?如何改写以使其更简单?如果在Powershell中重写会是什么?
答案 0 :(得分:1)
以下是如何缩短它:
@echo off
set "output="
if "%1"=="" goto otherthingy
set input=%1
:thingy
set output=%input:~0,1%%output%
set input=%input:~1%
if not "%input%"=="" goto thingy
echo %output%
:otherthingy
它从输入中获取每个字符并将其添加到输出的前面,从而导致顺序颠倒(Monacraft已经说明了这一点)。
(为了更好的可读性,我重命名了变量)
答案 1 :(得分:0)
至于你的代码是什么,我相信它会反转输入的字符串:
C:\> test.bat 1234567890
0987654321
至于它是如何工作的,我通过添加一个echo
命令使它在运行时打印所有变量,它只是通过字母并反转它
使用 :( Echo myvar2 = %myvar2% myvar5 = %myvar5% myvar1 = %myvar1%
)
C:\>test.bat 1234567890
myvar2 = 1 myvar5 = 1 myvar1 = 1234567890__HAHFDsdfasdfHADF__
myvar2 = 2 myvar5 = 21 myvar1 = 234567890__HAHFDsdfasdfHADF__
myvar2 = 3 myvar5 = 321 myvar1 = 34567890__HAHFDsdfasdfHADF__
myvar2 = 4 myvar5 = 4321 myvar1 = 4567890__HAHFDsdfasdfHADF__
myvar2 = 5 myvar5 = 54321 myvar1 = 567890__HAHFDsdfasdfHADF__
myvar2 = 6 myvar5 = 654321 myvar1 = 67890__HAHFDsdfasdfHADF__
myvar2 = 7 myvar5 = 7654321 myvar1 = 7890__HAHFDsdfasdfHADF__
myvar2 = 8 myvar5 = 87654321 myvar1 = 890__HAHFDsdfasdfHADF__
myvar2 = 9 myvar5 = 987654321 myvar1 = 90__HAHFDsdfasdfHADF__
myvar2 = 0 myvar5 = 0987654321 myvar1 = 0__HAHFDsdfasdfHADF__
0987654321
至于做得更有效,它已经准备好了。不要看它有什么不对。