Batch file 删除“;档案:";从cmd批处理文件中的路径

Batch file 删除“;档案:";从cmd批处理文件中的路径,batch-file,Batch File,我曾经使用Firefox的插件,它可以让我在系统上的外部编辑器中打开一个html文件。“内置”的是用于测试的,不允许您更新“本地”副本,现有的插件只在其他浏览器中打开。所以我决定尝试使用批处理文件来处理这个问题。这是我试图测试的代码: cls set str=%1:~8% echo. %str% 这是Firefox最终传递到批处理文件的示例: file:///C:/Users/Patrick/Documents/Comics.html 预期结果是str变成C:/Users/Patrick/Do

我曾经使用Firefox的插件,它可以让我在系统上的外部编辑器中打开一个html文件。“内置”的是用于测试的,不允许您更新“本地”副本,现有的插件只在其他浏览器中打开。所以我决定尝试使用批处理文件来处理这个问题。这是我试图测试的代码:

cls
set str=%1:~8%
echo. %str%
这是Firefox最终传递到批处理文件的示例:

file:///C:/Users/Patrick/Documents/Comics.html

预期结果是str变成C:/Users/Patrick/Documents/Comics.html,然后我可以通过批处理文件将其传递给编辑器

这是我得到的:

C:\Users\~\Desktop>set str=file:///C:/Users/Patrick/Documents/Comics.html:~8

C:\Users\~\Desktop>echo. file:///C:/Users/Patrick/Documents/Comics.html:~8
 file:///C:/Users/Patrick/Documents/Comics.html:~8
我还尝试将str变量“设置为”%1,然后使用“set str=%str:~8%”,但这只会给我“:~8”。我想我偶然发现了一个版本,它给了我“C:/Users/Patrick/Documents/Comics.html:~8”,但是。。是的,这一点也不接近正确,我认为它忽略了一个“set”函数,只是将结果字符串变短,每次我运行批处理时

我不知道这里到底出了什么问题,除非有什么该死的愚蠢的额外问题:在那里,作为绳子的一部分

我也想过改用powershell,但是。。我必须告诉我的系统允许它执行,这会造成潜在的安全漏洞


无论如何。。实际上是否有某种方法来管理它,或者文件的存在:\\其中的东西不仅使我的编辑器拒绝加载它,而且使批处理文件根本无法工作?

您只能操作一个环境变量。不能操作命令行参数或元变量。因此,必须先使用SET命令将命令行参数指定给变量。然后可以使用子字符串方法删除前8个字符

所以给出了下面的代码

@echo off
set str=%~1
echo Input: %str%
set str=%str:~8%
echo Output: %str%
现在,如果我们运行批处理文件并使用给定的示例作为批处理文件的命令行参数。看起来是这样的

C:\Batch\SO>foo.bat file:///C:/Users/Patrick/Documents/Comics.html
Input: file:///C:/Users/Patrick/Documents/Comics.html
Output: C:/Users/Patrick/Documents/Comics.html

C:\Batch\SO>
另一种选择是只进行字符串替换

@echo off
set str=%~1
set str=%str:*file:///=%

您为什么在本作业中使用
:~8%
?您只能操作环境变量。不能为元变量操作命令行参数或
。因此,必须先使用
SET
命令将命令行参数分配给变量:
SET str=%~1
。然后可以使用子字符串方法删除前8个字符:
set str=%str:~8%
.Hmm。。。好吧,那差不多行了。。我得到:“C:/Users/~/Documents/Comics.html:~8”这样做。出于某种不可理解的原因,它不仅删除了我想要的字符串部分,而且还附加了用于定义要跳到末尾的实际参数。我不明白为什么它会这样做…@PatrickElliott,如果你在输出的末尾得到一个瓦片和8,那么你就硬编码了。什么意思?因为,根据例子,它不应该这样做。谢谢我也试过换线,但是。。猜测它失败的原因是a)没有使用*,就像你在那里做的那样,和b)出于同样的原因,我的工作让我发疯。等号周围额外的血腥空间。很奇怪。我不知道巴奇对“那个”特定问题如此挑剔。但是,至少我现在可以工作了。我厌倦了使用下拉列表之类的工具来跟踪我每天阅读的新论坛/漫画,所以使用简单的html页面,这样就可以加载页面,单击每个链接,然后返回。然后Mozilla杀死了在他们的上下文菜单中添加内容,而且..我只希望我能修复这个奇怪的问题,“不,我不想从这个奇怪的菜单中选择在一个新的“窗口”中血腥地打开,就像我可以回到他们允许你编辑菜单内容的时候一样。这个“你不能在编辑器中打开”的事情已经让我发疯好几个月了,我决定”需要“今晚去解决它,即使我曾经改变过的一切都被打破了。哈哈,再次感谢您的帮助。@PatrickElliott如果您完全知道要删除的字符串在变量中只出现一次,那么实际上不需要用星号替换字符串。这只是一个技巧,防止它在开始时只替换字符串中的一次,因为它是非贪婪的。