Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 有没有办法从文本文件中删除空格?(或者从一开始就阻止它)_Batch File - Fatal编程技术网

Batch file 有没有办法从文本文件中删除空格?(或者从一开始就阻止它)

Batch file 有没有办法从文本文件中删除空格?(或者从一开始就阻止它),batch-file,Batch File,旁注-不是最好的程序员 我正在制作一个批处理文件脚本,需要从runfig.conf 我曾尝试使用setlocalenabledelayedexpansion,但似乎无法解决问题。其他谷歌搜索没有结果 这会将变量保存到文件中 echo %fname% > runfig.conf && echo Saving "%fname%" to file... echo %name% >> runfig.conf && echo Saving "%name%"

旁注-不是最好的程序员

我正在制作一个批处理文件脚本,需要从
runfig.conf

我曾尝试使用
setlocalenabledelayedexpansion
,但似乎无法解决问题。其他谷歌搜索没有结果

这会将变量保存到文件中

echo %fname% > runfig.conf && echo Saving "%fname%" to file...
echo %name% >> runfig.conf && echo Saving "%name%" to file...
echo %mem% >> runfig.conf && echo Saving "%mem%" to file...
这将读取文件:

< runfig.conf (
  set /p fname=
  set /p name=
  set /p mem=
)
它另存为:

database  
server  
4  

注意末尾的两个空格吗?那些东西把我的计划搞砸了。所以,为了重申我的问题,我该如何删除/防止这些呢?

没关系,我在谷歌的第三页找到了答案。 对于那些想知道的人,运行
设置a=%a:=%
其中
a
是您的变量。
无论如何,谢谢你

发生这种情况是因为您在
%fname%
之间放置了空格。有几种方法可以解决这个问题

第一种方法是简单地删除空间:

echo %fname%>runfig.conf && echo Saving "%fname%" to file...
echo %name%>>runfig.conf && echo Saving "%name%" to file...
echo %mem%>>runfig.conf && echo Saving "%mem%" to file...
但是,如果三个变量中的任何一个以数字结尾,这将产生意外的结果,因此这可能不是您的最佳选择

您还可以将重定向语句移到行的开头,再次删除变量后面的任何空格:

>runfig.conf echo %fname%&& echo Saving "%fname%" to file...
>>runfig.conf echo %name%&& echo Saving "%name%" to file...
>>runfig.conf echo %mem%&& echo Saving "%mem%" to file...

如果你不需要显示的状态(而你不需要,因为重定向不会在脚本中间神奇地失败),你可以把所有东西放在一个代码块中:

(
    echo %fname%
    echo %name%
    echo %mem%
)>runfig.conf
echo Values added to file.

与@SomethingDark的当前答案类似,这将写入配置文件,同时将通知消息重定向到控制台:

@Echo关闭
(Echo=%fname%&&Echo将%fname%保存到文件…>CON
Echo=%name%&&Echo将%name%保存到文件…>CON
Echo=%fname%&&Echo将%mem%保存到文件…>CON)>“runfig.conf”

如您所见,write方法与read方法相同,不同之处在于使用STDOUT而不是STDIN:

(设置/P“fname=”
设置/P“名称=”

设置/P“mem=”)您确实意识到您正在
echo
ing
%var%
,为每行引入一个尾随空格;不是吗?这将从名为
%a%
的变量中删除所有空格,但无法解决您问题中的问题。我不敢相信我忘记了
CON
(
    echo %fname%
    echo %name%
    echo %mem%
)>runfig.conf
echo Values added to file.