以相反顺序显示参数

时间:2013-04-08 16:32:32

标签: batch-file cmd

我需要创建一个批处理文件,该文件最多可在屏幕上显示9个参数,但以反向顺序显示。批处理文件的名称是reverse11.bat

eg: C:\>REVERSE11.bat a b c d e <enter>
e d c b a REVERSE

我试着像这样做,它有点混乱,没有工作。 :(

SORT/R < %O > ANSWER
ECHO ANSWER

它有什么不对吗?

3 个答案:

答案 0 :(得分:1)

SORT排序,而非单词,因此您需要将每个参数放在自己的行上。

setlocal enabledelayedexpansion
echo %1> unsorted.txt
echo %2>> unsorted.txt
echo %3>> unsorted.txt
:: etc...

sort /r unsorted.txt > sorted.txt

此时你可以显示sorted.txt如果你可以将它们全部放在不同的行上:

type sorted.txt

但是如果你想将它们全部放回一行,你必须像这样处理文件:

for /f %%a in (sorted.txt) do (
    set out=!out! %%a
)
echo %out%

答案 1 :(得分:1)

你必须注意sort命令在LINES上工作,而不是单词!下面的批处理文件首先将参数分成不同的行,并将它们存储在临时文件中;第二部分在文件上调用sort /R并仅在一个字符串中收集其输出行:

@echo off
setlocal EnableDelayedExpansion
(for %%a in (%*) do echo %%a) > temp.txt 
set output=
for /F "delims=" %%a in ('sort /R ^< temp.txt') do set output=!output! %%a
echo %output:~1%
del temp.txt

答案 2 :(得分:0)

@ECHO OFF
SETLOCAL
SET reversed=%0
:loop
SET newparam=%1
IF NOT defined newparam ECHO %reversed%&GOTO :eof
SET reversed=%1 %reversed%
shift
GOTO loop

我们首先将变量reversed设置为程序名称的值。

newparam设置为FIRST参数的值(%1) 如果该参数存在,则将其添加到累积字符串的FRONT,然后SHIFT将参数移动到较低的一个位置(%2变为%1,%3变为%2等)并循环回直到。 ..

%1参数不存在(因为它们都被SHIFT删除了)所以在reversed中回显累积的字符串并完成例程。