0

我需要创建一个批处理文件,它将在屏幕上显示多达 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

它出什么问题了?

4

3 回答 3

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%
于 2013-04-08T16:40:59.330 回答
1

您必须注意该sort命令适用于 LINES,而不是 WORDS!下面的批处理文件首先将参数分成单独的行并将它们存储在一个临时文件中;第二部分调用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
于 2013-04-08T17:46:34.640 回答
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并完成例程。

于 2013-04-08T16:48:45.973 回答