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