所以我有一个文件夹完整的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 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" )
但是…你想用这条线实现什么:
type %%x | findstr /v string %%x >> %finalname%
type %%x | findstr /v string %%x >> %finalname%
– (当您使用管道内容时,您不需要指向文件)?
作为npocmaka点,您可以在代码中使用正确的延迟扩展语法解决变量引用中的问题,也可以直接删除变量:
ren *.json *.old for %%x in (*.old) do ( type "%%x" | findstr /v /c:"string" > "%%~nx.json" del "%%x" )
而不是存储您需要的变量内的值,只需使用值。