Windows 如何处理批处理中的变量-从所有文件中删除行
所以我有一个文件夹,里面有一行json文件,我想删除。因为我是批处理脚本的新手,所以我面临一些问题。到目前为止,我已经做到了:Windows 如何处理批处理中的变量-从所有文件中删除行,windows,batch-file,cmd,concatenation,Windows,Batch File,Cmd,Concatenation,所以我有一个文件夹,里面有一行json文件,我想删除。因为我是批处理脚本的新手,所以我面临一些问题。到目前为止,我已经做到了: setlocal EnableDelayedExpansion ren *.json *.old for %%x in (*.old) do ( set filename=%%~nx set extension=.json set finalname=%filename%%extension% type %%x | findstr /v
setlocal EnableDelayedExpansion
ren *.json *.old
for %%x in (*.old) do (
set filename=%%~nx
set extension=.json
set finalname=%filename%%extension%
type %%x | findstr /v string %%x >> %finalname%
del %%x
)
但这一切似乎都不起作用。例如,当我回显%finalname%时,它是空的,因此连接似乎不起作用。我还需要确保文件名中的空白得到处理。要使用延迟扩展进行扩展,请使用
代码>而不是%
setlocal EnableDelayedExpansion
ren *.json *.old
for %%x in (*.old) do (
set "filename=%%~nx"
set "extension=.json"
set "finalname=!filename!!extension!"
type "%%x" | findstr /v "string" "%%x" >>"!finalname!"
del "%%x"
)
但是……你想通过这条线实现什么:
键入%%x | findstr/v string%%x>>%finalname%
-(当您使用管道内容时,不需要指向文件)作为npocmaka点,您可以在变量引用中使用正确的延迟扩展语法来解决代码中的问题,也可以直接删除变量:
ren*.json*.old
对于%%x英寸(*.old)do(
键入“%%x”| findstr/v/c:“字符串”>“%%~nx.json”
del“%%x”
)
不用在变量中存储所需的值,只需使用这些值即可。谢谢!成功了。不仅是这个!但也有问题。非常感谢你!因此,我认为findstr/v“string”“%%~fx”>>“!filename!”
就足够了(由于性能原因,我会避免使用管道)。。。