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 如何通过批处理文件将文本文件中的固定字符串替换为NULL_Batch File_Batch Processing - Fatal编程技术网

Batch file 如何通过批处理文件将文本文件中的固定字符串替换为NULL

Batch file 如何通过批处理文件将文本文件中的固定字符串替换为NULL,batch-file,batch-processing,Batch File,Batch Processing,我有一个文本文件,我想用“”(NULL)替换NULL字符串。文本文件test.txt的内容为: abc,1234,qwe,NULL 234,NULL,wer,jkl jkl,678,987,NULL 我希望test.txt中的输出如下所示: abc,1234,qwe, 234,,wer,jkl jkl,678,987, 我不熟悉这一点,请帮助我,提前感谢尝试以下代码: @echo off REM -- Prepare the Command Processor -- SETLOCAL ENA

我有一个文本文件,我想用“”(NULL)替换NULL字符串。文本文件test.txt的内容为:

abc,1234,qwe,NULL
234,NULL,wer,jkl
jkl,678,987,NULL
我希望test.txt中的输出如下所示:

abc,1234,qwe,
234,,wer,jkl
jkl,678,987,
我不熟悉这一点,请帮助我,提前感谢

尝试以下代码:

@echo off
REM -- Prepare the Command Processor --
SETLOCAL ENABLEEXTENSIONS
SETLOCAL DISABLEDELAYEDEXPANSION

::BatchSubstitude - parses a File line by line and replaces a substring"
::syntax: BatchSubstitude.bat OldStr NewStr File
::          OldStr [in] - string to be replaced
::          NewStr [in] - string to replace with
::          File   [in] - file to be parsed
:$changed 20100115
:$source http://www.dostips.com
if "%~1"=="" findstr "^::" "%~f0"&GOTO:EOF
for /f "tokens=1,* delims=]" %%A in ('"type %3|find /n /v """') do (
    set "line=%%B"
    if defined line (
        call set "line=echo.%%line:%~1=%~2%%"
        for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X
    ) ELSE echo.
)
上述代码取自。如果要保存输出,请保存此批处理文件并运行以下命令

C:\> <name of the above batch file> "NULL" "" originalFile.txt > test.txt
调用集“line=%%%line:%originalText%=%replacedText%%%”
将负责搜索和替换文本文件中的
NULL
单词。然后,程序将结果存储到
test.txt


注意,
调用集
是必需的,因为它将扩展在同一行上传递的变量。

您有其他方法吗?我想要更简单的方法,因为我不熟悉这一点,我已经为处理该文件编写了批处理文件,我想将其合并到同一批处理文件中,请建议一些其他方法这种方法在某种程度上是有效的,但并不完全有效,问题是在每行的每一端都显示1个空格,这是不可取的。
@echo off
setLocal enableDelayedExpansion
set filename=input.txt
set originalText=NULL
set "replacedText="

for /f "tokens=*" %%a in ('type %filename%') do (
    set "line=%%a"
    if defined line (
        call set "line=%%line:%originalText%=%replacedText%%%"
        echo !line!>> test.txt
    ) else (
        echo.
    )
)