windows - 在 CMD 中反向输出
问题描述
我有一个短语需要在 results.txt 中输出。该短语来自x.txt。例如:“我有两个孩子”,它应该在 results.txt 中输出“孩子两个有我”。
更新
它已经在工作,但我不想循环。请看下面的代码
代码
@ECHO OFF
set /p content=<x.txt
SET var=!content: =,!
SET rev=
:LOOP
IF NOT "!var!"=="" (
FOR /F "delims=, tokens=1,*" %%F IN ("!var!") DO (
SET rev=%%F,!rev!
SET var=%%G
)
) ELSE (
SET rev=!rev:~0,-1!
GOTO ENDLOOP
)
GOTO LOOP
:ENDLOOP
ECHO !rev:,= ! > results.txt
解决方案
这需要文本文件的前四个单词(每行)并以相反的顺序将它们重写为result.txt
:
>result.txt (for /f "tokens=1-4" %%a in (x.txt) do echo %%d %%c %%b %%a)
另一种解决方案(对于单行文本文件,未指定字数):
@ECHO OFF
setlocal enabledelayedexpansion
echo I have two little but wonderful kids>x.txt
<x.txt set /p x=
for %%a in (%x%) do set "res=%%a !res!"
>result.txt echo %res:~0,-1%
(虽然从技术上讲,该for
命令本身就是一个循环)
如果没有任何形式的循环,如果您可以在前面保留一些空格:
@ECHO OFF
setlocal
echo I have two kids>x.txt
<x.txt set /p x=
call :reverse %x%
goto :eof
:reverse
set "rev=%9 %8 %7 %6 %5 %4 %3 %2 %1"
echo Reverse without any form of loop: "%rev%"
for /f "tokens=*" %%a in ("%rev%") do echo To get rid of the spaces, you need a FOR loop: "%%a"
这限制为最多九个单词,因为cmd
仅支持%1
您%9
可以通过使用shift
命令使用更多参数(单词),但这意味着使用循环。
推荐阅读
- python - 在多个列表上进行数值积分的 Scipy
- python - 如何删除 MongoDB 数组中缺少字段的元素?
- java - Eclipse Maven 项目外观
- typeerror - 为什么它一直在写(TypeError:不支持的操作数类型/:'str'和'int')
- java - Android Studio 中的 Webview 应用程序 MIC 访问问题
- android - 在启动 Google Pay 之前发送会员卡 NFC 数据
- c++ - 在记事本++上编译c++时出现“找不到指定的文件”错误
- extjs - Sencha 无法在 windows 上找到支持的框架
- python - Django强制异步数据库操作
- macos - SwiftUI List with Divider 但在 MacOS 中没有额外的 Insets