使用Windows批处理脚本检测字符串中的字符串,以从文件路径生成域名和路径

时间:2017-02-04 14:27:30

标签: batch-file

我有一个Windows资源管理器上下文菜单项,它将调用批处理文件并向其传递上下文菜单显示的文件的文件路径,如下所示:

G:\htdocs\Labs\javascript\socialbuttons\socialable.html

我需要做的是检测文件路径是在我的开发服务器项目文件夹中还是在 labs 文件夹中。

如果它在我的项目文件夹中,那么我需要从文件路径中提取域名并将其存储在一个变量中,并附加文件路径的其余部分。

如果它在我的labs文件夹中,则只需从字符串中删除X个字符,并将余数存储在变量中。

我几乎不知道批处理脚本,所以我想把它拼凑起来。

要检测它是否在我的项目文件夹中,我认为这将完成工作......

所以给定这个文件路径传递给脚本......

G:\htdocs\projects\webdevapp\app\folder\file.php

那么这段代码

IF "%variable:~0,18%"=="G:\htdocs\projects"

会看到这是一个项目文件。

然后需要从字符串webdevapp中抓取此部分,并将http://添加到其开头,并将.dev添加到其结尾。接下来,它需要将剩余的文件路径\app\folder\file.php附加到它。

接下来需要将\替换为/ s

结果字符串为:

http://webdevapp.dev/app/folder/file.php

现在,如果文件路径中没有项目路径并且是labs文件夹,那么只需要将其转为:

G:\htdocs\Labs\javascript\socialbuttons\socialable.html

进入这个:

http://localhost/Labs/javascript/socialbuttons/socialable.html

然后我可以使用新的字符串并在浏览器中打开:

start chrome.exe domain_variable_here

根据我的情况,任何人都可以帮助完成下一步工作吗?

1 个答案:

答案 0 :(得分:0)

@echo off
setlocal enabledelayedexpansion
set "xchars=5"
set "pathtf=your path here"
echo %pathtf% | find "labs"
if %errorlevel% == 0 (
set "pathtf=!pathtf:~0,-%xchars%!"
goto :eof
)
echo %pathtf% | find "projects"
if %errorlevel% == 0 (
set "pathtf=%pathtf:\=/%"
set "pathtf=%pathtf:G:\htdocs\projects\webdevapp=http://webdevapp.dev%"
)
echo %pathtf%

结果将存储在%pathtf%