此代码应该将文件的内容设置为变量,但不起作用。请注意,我在脚本的顶部有SETLOCAL EnableDelayedExpansion
。
for /f "delims=" %%i in ('out.txt') do set duh=!duh! %ii
echo %duh% > Displaynames\Name.txt
和
for /f "delims=" %%i in ('out.txt') do set duh=%duh% %ii
echo %duh% > Displaynames\Name.txt
不行。 Displaynames\Name.txt
读取ECHO is off.
知道我做错了什么?谢谢!
答案 0 :(得分:1)
该消息是因为%duh%
未定义,即它尚未设置为任何内容。 原因是您在括号内使用了单引号。
这是否能满足您的需求:
Set "duh="
For /F "UseBackQ Delims=" %%A In ("out.txt") Do Set "duh=!duh! %%A"
>"Displaynames\Name.txt" Echo %duh:~1%
修改强>
经过反思,我发现您的out.txt
文件可能只包含一行,可能只包含一个单词,例如Jen
。
如果是这种情况,那么将文件的第一行设置为变量的类似内容将是一个很大的改进:
Set/P "duh="<"out.txt"
>"Displaynames\Name.txt" Echo %duh%
答案 1 :(得分:0)
检查语法。它是for /f .... in ('command') do ...
你试图执行 out.txt
(它没有给你任何反馈),所以你什么也得不回来。
要验证,请尝试:
for /f "delims=" %%a in ('echo hello') do echo %%a
您(可能)想要的是获取文件的内容。语法是:
for /f "delims=" %%a in (file.txt) do echo %%a
由于文件名可以包含空格,因此引用它更好:
for /f "usebackq delims=" %%a in ("file.txt") do echo %%a
注意:在其他一些语言中,您既可以使用单引号'
,也可以使用双引号"
。在批处理中,只有双引号"
。这里的单引号是for
的特殊内容,告诉它,它应该执行,内部是什么。
答案 2 :(得分:-2)
我不确定问题是什么,但对于其他人我发现这个脚本有效:
set cmd="type out.txt"
FOR /F "tokens=*" %%i IN (' %cmd% ') DO SET X=%%i
setlocal enabledelayedexpansion
for /f "tokens=* delims= " %%a in ("%x%") do set x=%%a
for /l %%a in (1,1,100) do if "!x:~-1!"==" " set
x=!x:~0,-1!
echo %x% > Displaynames\Name.txt
感谢所有帮助过的人,抱歉,我无法分享整个脚本。 编辑:我改变了这个,以便它删除额外的空间。