2015-07-02 5 views
0

Следующий командный файл принимает параметр, который является путем и именем файла.Windows Batch: замена строки

@echo off 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET filename=%~1 
echo !filename! 
ENDLOCAL 

Имя файла, принятое как параметр, всегда будет отформатировано с использованием косых черт. Для того, чтобы заменить forwardshlashes с обратными косыми чертами, я попытался это:

SET filename=!filename:/=\! 

Но это не работает. Каков самый простой способ выполнить замену строк в пакетном файле Windows?

Благодаря

ответ

1

Прежде всего вам нужно удалить пробел после =:

SET filename=%~1 

В противном случае пространство станет частью вашей переменной.

Для замены/с \ Вы должны использовать % вместо !:

SET filename=!filename:/=\! 

Кроме того, нет ничего в коде, который потребует ENABLEEXTENSIONS так что вы можете пропустить его.

EDIT:

Это мой код something.bat:

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

Вызов something.bat ABC/DEF/GHI результатов в выходном сигнале ABC\DEF\GHI.

+0

Сделано это изменение, и уточнен вопрос, но он не работает. Это то, что эхом:/= \ – user1052610

+0

Что вы эхом отдаете? 'ECHO% filename%' или 'ECHO! Filename!'? Первый из них отжимается, второй правильный :) – MichaelS

+0

Еще не успел, отредактировал вопрос,! Filename! отражается как/= \ – user1052610

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% 
+0

большое спасибо! – user1052610

Смежные вопросы