2013-04-25 68 views
0

我搜索改变一些东西。修改批量查找替换并使用标签

我得到了一个查找和替换这里:http://www.dostips.com/?t=Batch.FindAndReplace

我想与制表替换逗号。但是我取代%1%2%3是错误的。

@echo off 
SETLOCAL ENABLEEXTENSIONS 
SETLOCAL DISABLEDELAYEDEXPANSION 

@echo off set OldStr=, 
@echo off set NewStr=\t 
@echo off set FilePath=%UserProfile%\Desktop\information.csv 

if "%OldStr%"=="" findstr "^::" "%~f0"&GOTO:EOF 
for /f "tokens=1,* delims=]" %%A in ('"type %FilePath%|find /n /v """') do (
    set "line=%%B" 
    if defined line (
     call set "line=echo.%%line:%OldStr%=%NewStr%" 
     for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X 
    ) ELSE echo. 
) 

我不确定\ t的工作。

我尝试更改命令,因为我需要1个批处理文件来完成所有我想要的操作。


原始

@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. 
) 

我想利用这个脚本在我自己的批处理文件。所以我需要通过var来改变参数。

+0

我可以看到有你的代码错误的许多潜在领域。你应该开始尝试逐行理解代码的作用,检查你是否想要做什么,然后回来更具体的问题。我们很乐意为您提供帮助。 – 2013-04-25 16:38:02

+0

我编辑我的帖子。我是批量生产者,我可以从全球范围内理解它做了什么,但为什么〜这么多%的东西。我问,因为有些人已经知道如何做改变。 – forX 2013-04-25 16:45:31

+0

阅读关于Set /中的环境变量替换? – 2013-04-25 17:55:02

回答

1

变化,\ t

@echo off 

REM -- Prepare the Command Processor -- 
SETLOCAL ENABLEEXTENSIONS 
SETLOCAL DISABLEDELAYEDEXPANSION 

if /I "%~1"=="/h" goto:help 
if "%UserProfile%\Desktop\%ComputerName%.csv"=="" goto:help 

if ","=="" findstr "^::" "%~f0"&goto:help 
for /f "tokens=1,* delims=]" %%A in ('"type %UserProfile%\Desktop\%ComputerName%.csv|find /n /v """') do (
    set "line=%%B" 
    if defined line (
     call set "line=echo.%%line:,= %%" 
     for /f "delims=" %%X in ('"echo."%%line%%""') do %%~X >> %UserProfile%\Desktop\%ComputerName%.csv_new 
    ) ELSE echo. 
) 
move /Y %UserProfile%\Desktop\%ComputerName%.csv_new %UserProfile%\Desktop\%ComputerName%.csv >nul