在Windows的批处理文件中,回车是可以用软中断来完成的,在编辑器程序的视图命令中,当我使用回车键和软中断的硬中断时,自动的Word包被关闭,没有被sheduled或标记,文件路径或文件路径名没有通过CMD命令行验证。
例如
type C:\"Dokumente und Einstellungen"\Textdokument.txt
返回Textfile的输出。
type C:\"Dokumente und Einstellungen"
\Textdokument.txt
用回车键包装,不返回输出。
type C:\"Dokumente und Einstellungen"
\Textdokument.txt
返回Textfile的输出,当Word wrap开启时,我使用回车键断行,断行方式取决于打开的编辑器窗口的大小。
当Word wrap再次关闭时,我可以使用一个caretsymbol ^来断行,而不是使用自动断行,即Word wrap命令开启的软断行。
type C:\"Dokumente und Einstellungen"^
\Textdokument.txt
即使自动换行,Word包装被关闭,当TEXTwas写入时,返回Textfile的输出。
使用s for /F
指挥和 "usebackq"
选项,因为我的NTFS格式的硬盘必须使用双引号,所以命令行中的文字是
for /F "usebackq" %%A in ("C:\Dokumente und Einstellungen\Textdokument.txt") do echo %%A
这与Textfile相呼应,也可以用Word wrap on断行。
也可以在Word包装打开的情况下断行,这样就会返回一个输出。
就像type命令一样,当Word wrap关闭时,在文件路径中断行的情况下,Textfile不会有任何输出。
我试着在for Fcommand中也使用caret ^符号,但无法像type命令行中的路径名那样断行,从而使命令从Textfile中返回输出。
我的问题是,有什么方法可以让回音输出与 for /F
命令,而不是使用 Wordwrap 命令,当路径名用逗号或类似的符号断开时,该怎么办?
我使用Windows XP来处理批处理文件。
祝愿 Stefan :)
和你一样,我发现。
for /F "usebackq" %%A in ("C:\Users\myusername\" ^
"foo.txt") do echo %%A
不见得有效。 然而,一个变通的方法可能是。
SET MYDIR = "c:\Users\myusername\"
for /F "usebackq" %%A in (%MYDIR% ^
"foo.txt") do echo %%A
这对我来说是可行的
首先,我必须提到,引号,如 type C:\"Dokumente und Einstellungen"\Textdokument.txt
是一个可怕的坏习惯,你应该总是引用整个路径,如 type "C:\Dokumente und Einstellungen\Textdokument.txt"
.
锯齿 ^
当引号出现在被引用的部分时,它不被识别为转义字符,所以这不能工作。
for /F "usebackq" %%A in ("C:\Dokumente und Einstellungen\^
Textdokument.txt") do echo %%A
但是你可以把引号转义,这样就可以了。
for /F "usebackq" %%A in (^"C:\Dokumente und Einstellungen\^
Textdokument.txt^") do echo %%A
然而,转义引号会使路径暴露在未引用的解析器中,当然,所以你要注意,这可能会给一些特殊字符带来麻烦,例如 &
, (
, )
, ^
.
此外,上面的命令行实际上转义的第一个字符是 T
的第二行。这在这里不是问题,因为 T
没有什么特别的,但可能会有问题的情况。
你不能把 SPACEs 在...之前 ^
或在下面一行的开头,因为它们会被视为指定路径的一部分。
总之,让我提出另一种安全且无需转义的方法。
for /F "usebackq" %%A in (
"C:\Dokumente und Einstellungen\Textdokument.txt"
) do echo %%A