使用给定的批处理文件,它有什么作用?我怎样才能重写它以使其更简单?

时间:2014-08-31 01:50:26

标签: powershell batch-file

@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中重写会是什么?

2 个答案:

答案 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

至于做得更有效,它已经准备好了。不要看它有什么不对。