如何使用cmd替换部分路径?

时间:2014-01-18 02:33:54

标签: batch-file cmd sublimetext3

嘿stackoverflow社区,
我试图在我的xampp / htdocs目录中为我的.html文件在Sublime Text 3中建立一个构建系统。

因此我需要替换部分文件路径并添加
"http://localhost/"
在开始时,然后在浏览器中调用它。随意发布任何建议。

到目前为止,我从其他主题中发现了什么:

SETLOCAL ENABLEDELAYEDEXPANSION
-- represtened by the $file variable in Sublimetext 3 - filepath would look like "${file}" --
SET filepath="C:\xampp\htdocs\test.html" 
SET searchstring="C:\xampp\htdocs\"
SET replacestring="http://localhost/"
SET modifiedpath=%searchstring%=%replacestring%!

-- not sure about this one but it should work as it does for hardcoded sites --
"C:\Program Files\Opera\launcher.exe" !modifiedpath!

我从这些命令得到的结果只是我在浏览器中打开的第一个文件路径。

我做错了什么?我找不到任何关于使用cmd操纵路径的主题。 系统= W7 / 32位和W8 / 64位相同的结果

提前致谢, 彼得

2 个答案:

答案 0 :(得分:1)

您的示例是使用新路径替换整个路径。如果始终如此,您可以使用%~filename操作操作来完成此操作。

@echo off
set FILEPATH=c:\xampp\htdocs\test.html
call :launch "%FILEPATH%"
goto :EOF

:launch
echo "C:\Program Files\Opera\launcher.exe" "http://localhost/%~nx1"

或者,如果您将FILEPATH作为参数%1提供给批处理文件,只需

echo "C:\Program Files\Opera\launcher.exe" "http://localhost/%~nx1"

您可以通过运行命令

了解有关cmd中文件名操作选项的更多信息
help for

如果不是这种情况,那么尝试设置搜索并替换字符串就不会给自己带来任何好处。只需进行必要的搜索并将文本替换为内联就更简单了。

@echo off
set FILEPATH=c:\xampp\htdocs\foo\test.html
set NEWPATH=%FILEPATH:c:\xampp\htdocs\=http://localhost/%
echo "C:\Program Files\Opera\launcher.exe" "%NEWPATH:\=/%"

您可以通过运行

了解有关字符串替换的更多信息
help set

答案 1 :(得分:0)

@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
:: -- represtened by the $file variable in Sublimetext 3 - filepath would look like "${file}" --
SET "filepath=C:\xampp\htdocs\test.html" 
SET "searchstring=C:\xampp\htdocs\"
SET "replacestring=http://localhost/"
CALL SET "modifiedpath=%%filepath:%searchstring%=%replacestring%%%"
:: Belt-and-braces
SET "modifiedpath=%modifiedpath:\=/%"

:: -- not sure about this one but it should work as it does for hardcoded sites --
ECHO "C:\Program Files\Opera\launcher.exe" "%modifiedpath%"

GOTO :EOF

这应该有效 - 这里实际上不需要enabledelayeexpansion

不确定Opera - 可执行文件名称周围的引号是必需的,但参数可能也许不是。由于我没有安装它,我只是ECHO编辑它 - 您需要删除ECHO才能使其正常工作。实际上,CMD将只显示一个应该调用Opera的命令行。