Windows批处理:字符串替换

时间:2015-07-02 07:42:07

标签: batch-file

以下批处理文件接受一个路径和文件名参数。

SET filename=!filename:/=\!

当作为参数接收时,文件名将始终使用正斜杠进行格式化。 为了用反斜杠替换正斜杠,我尝试了这个:

Configuration

但那不起作用。 在Windows批处理文件中进行字符串替换的最简单方法是什么?

由于

2 个答案:

答案 0 :(得分:1)

首先,您需要删除=之后的空格:

SET filename=%~1

否则空格将成为变量的一部分。

要替换/用\,您必须使用%而不是!

SET filename=!filename:/=\!

此外,您的代码中没有任何内容需要ENABLEEXTENSIONS,因此您可以跳过它。

编辑:

这是我的something.bat代码:

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
SET file=%~1
SET file=!file:\=/!
ECHO !file!

调用something.bat ABC/DEF/GHI会导致输出ABC\DEF\GHI

答案 1 :(得分:1)

设置变量

时出现问题
               v...v. Initial and ending spaces included in value
SET filename =  %~1 
            ^........ Space included in variable name

由于变量不是%filename%,而是%filename %,因此您的替换失败。对于字符串替换方法,您可以使用

@echo off
    setlocal enableextensions disabledelayedexpansion
    set "filename=%~1"
    set "filename=%filename:/=\%"
    echo %filename%

或更好的是,这种情况可以使用参数修饰符来解决

@echo off
    setlocal enableextensions disabledelayedexpansion
    set "filename=%~f1"
    echo %filename%