我需要创建一个批处理文件,该文件最多可在屏幕上显示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
它有什么不对吗?
答案 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
中回显累积的字符串并完成例程。