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
“如何替换”/&引用;“通过”&引用;在windows上使用批处理将文件*.log记录到*.csv_Windows_Batch File - Fatal编程技术网

“如何替换”/&引用;“通过”&引用;在windows上使用批处理将文件*.log记录到*.csv

“如何替换”/&引用;“通过”&引用;在windows上使用批处理将文件*.log记录到*.csv,windows,batch-file,Windows,Batch File,我有许多文件*.log,其中包含以下行: 11111/3333/45555/6666/2222//7777 我需要将所有“/”替换为“;”,生成以下结果: 11111;3333;45555;6666;2222;;7777 但结果必须位于同名但扩展名不同的文件中:*.csv。 如何在windows上使用ms dos批处理来执行此操作? PS:我不能使用.net、perl、vbscript或一些库。这个脚本用于面试,他们想测试我是否懂Windows脚本 我已经试着开始,但没有工作 @echo off

我有许多文件*.log,其中包含以下行:

11111/3333/45555/6666/2222//7777

我需要将所有“/”替换为“;”,生成以下结果:

11111;3333;45555;6666;2222;;7777

但结果必须位于同名但扩展名不同的文件中:*.csv。 如何在windows上使用ms dos批处理来执行此操作? PS:我不能使用.net、perl、vbscript或一些库。这个脚本用于面试,他们想测试我是否懂Windows脚本

我已经试着开始,但没有工作

@echo off
setlocal ENABLEDELAYEDEXPANSION
for /f "delims='/' tokens=*" %%i in ('findstr "\/" Input.txt') do (
    echo %%i
    set str=%%i
    set myvar=";"
    set str=%str:"/"=!myvar!%
    echo %str%
)

非常感谢。

这使用了一个名为
repl.bat的帮助程序批处理文件(由dbenham提供)-下载自:

repl.bat
放在与批处理文件相同的文件夹中,或放在路径上的文件夹中

@echo off
for %%a in (*.log) do type "%%a" |repl "/" ";" L > "%%~na.csv"
像这样:

@echo off 
setlocal enabledelayedexpansion
for  %%a in (*.log) do (
  echo Working : %%a
  for /f "delims=" %%b in ('type %%a') do (
     set "$Line=%%b"
     set "$Line=!$Line:/=;!"
     echo !$Line!>>%%~na.csv)
 echo Done...
)

我不能使用这个repl.bat,因为这一批是为了明天的面试。没有这个你有什么解决办法吗?谢谢,没错!非常感谢你!问:你能解释一下这是怎么回事吗?除了“echo!$Line!>>%%~na.csv”这一部分,我什么都懂了。它只是使用修饰符
~n
获得了名称,没有扩展名。谢谢!你真的帮了我。