Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.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
Windows 如何处理批处理中的变量-从所有文件中删除行_Windows_Batch File_Cmd_Concatenation - Fatal编程技术网

Windows 如何处理批处理中的变量-从所有文件中删除行

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

所以我有一个文件夹,里面有一行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"
)
但是……你想通过这条线实现什么:


键入%%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!”
就足够了(由于性能原因,我会避免使用管道)。。。