【问题标题】:Cmd/batch how do I convert one line at a time in a .txt from one variable to an otherCmd /批处理如何将.txt中的一行从一个变量一次转换为另一个
【发布时间】:2018-01-28 20:38:42
【问题描述】:

例如,我有一个包含一些随机字母的文档

第 1 行:k
第 2 行:l
第 3 行:m
第 4 行:n

我想读一行并更改我已经在下面使用的脚本来执行此操作的字母。

if "%name%"=="k" (goto k)

然后我有这个来设置新变量。

:k  
SET name=a  
goto echo  

然后我让它输出到另一个文档中使用

:echo  
ECHO %name%>>newvarables.txt  
goto getinput

有没有办法可以根据我已有的系统将第一个文档的行转换为其他变量?

【问题讨论】:

  • 这看起来像是一个过于简单的例子,而不是真正的任务。要处理文件的每一行,请使用for /f - 此站点上有数百个示例,请使用上面的搜索框。 Stack Overflow 不是脚本编写服务,您应该多花点功夫,在ss64.com/nt 上学习命令的语法
  • 我在本剧之外的许多网站上进行了研究,但没有任何东西适用于 Windows 10,或者不是我在上面的描述中明确说明的我在搜索时也使用了“替换文本文档中的行”这个表格只有42个结果,大部分是其他语言,不是MS-Dos。
  • 也许您没有得到结果,因为 MS-Dos 是错误的键?您真正使用哪个操作系统?对我来说,你的问题还不清楚。
  • Hmm.. 在搜索词中添加 Windows Batch 是否会使结果更像批处理脚本?
  • 这个过程使用替换array来简单得多

标签: file batch-file variables text


【解决方案1】:

以下示例仅适用于 WINDOWS NT 系统!


for /f %%G in (filename.ext) do call :function "%%~G"
goto :eof

:function
set skip=rem
if "%~1"=="k" set name=a
if "%~1"=="l" set name=m
if not "%name%"=="" set skip=
%skip% echo %name%>>filename2.ext
exit /b

遍历字符串并处理它们,根据您的需要进行更改。这段代码有意是混乱的,所以:

人们需要在理解上付出一些努力,而不仅仅是复制粘贴我的代码。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-08
    相关资源
    最近更新 更多