gpt4 book ai didi

batch-file - 删除批处理文件中的尾部反斜杠

转载 作者:行者123 更新时间:2023-12-04 18:11:40 25 4
gpt4 key购买 nike

我正在编写一个简短的批处理脚本,它尝试获取文本文件的第一行并删除尾部反斜杠(如果存在)。这将重复输入文件的其余行。但是,当我运行脚本时,该行不会删除反斜杠。我的猜测是这是一个简单的修复,但我尝试了几种故障排除方法,但都没有成功。代码贴在下面以供引用。谢谢!

@echo on
setLocal EnableDelayedExpansion

::set firstline to firstline of test.txt
set /p firstline=<test.txt

::Remove trailing slash if present
IF !firstline:~-1!==\ SET firstline=!firstline:~0,-1!

::Output firstline (without \ to new txt file)
echo !firstline!>test2.txt

endlocal

test.txt 文件:
C:\Desktop\example\path\ 

C:\Desktop\example\path\2\

C:\Desktop\example\path\test\

最佳答案

你是对的,这是一个简单的问题。事实上,它是通过引入 4 个字符来解决的,都是一样的。

批量暴露反斜杠是个坏主意,它可能会使解释器误以为它正在处理实际的文件或路径。你应该用双引号括起来。其他字符也是如此,包括 !%&*?/\<>,。主要是处理路径和文件的特殊字符。可能还有更多,有些只是偶尔出现的问题。在重定向字符旁边时,即使 1 和 2 也会引起麻烦。

只是让您知道,setlocal或延迟扩展符号!在这里是必要的,尽管它没有害处。 (除了在这种情况下延迟表示法使调试更加困难,通过在 ECHO 为 On 时显示变量名称而不是其内容。)

此外,在修剪字符串的最后一个字符时,:~0,-1 中不需要 0。 , 使用 :~,-1足够了。尽管无论哪种方式都没有坏处。

最后,echo on是不必要的,因为 echo on是默认值。 Echo On更多的是只显示长文件执行的一小部分。不过,再一次,它没有害处。

@echo on
setLocal EnableDelayedExpansion

::set firstline to firstline of test.txt
set /p firstline=<test.txt

::Remove trailing slash if present
::Your error is below this
IF "!firstline:~-1!"=="\" SET firstline=!firstline:~,-1!

::Output firstline (without \ to new txt file)
echo !firstline!>test2.txt

endlocal

关于batch-file - 删除批处理文件中的尾部反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12538562/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com