当我在Sublime Text中按Ctrl + Shift + B
时,我运行了一个批处理文件,在这个批处理文件中我有以下内容:
set arg1=%1
echo %arg1%
set arg2=%arg1:c:=r:%
echo %arg2%
set arg3=%arg1:c:=z:%
echo %arg3%
bcompare %arg1% %arg2%
bcompare %arg1% %arg3%
因此,我在C:\
上获取文件路径,并将文件(使用Beyond Compare 3)与完全相同的路径进行比较,但R:\
除外。这一直很好用,但今天我必须对C:\
上的文件和文件夹结构进行一些更改,现在说mytestfile.php
的路径是:
C:\的Inetpub \ wwwroot的\主\站点\ mytestfile.php
所以更改的位是驱动器Main\
上的R:\
HOWEVER我没有那个Main文件夹,我希望路径为:
C:\的Inetpub \ wwwroot的\站点\ mytestfile.php
如何通过删除.bat
和Main\
上文件路径的R:\
来更改Z:\
文件中的代码以解决此更改?
答案 0 :(得分:1)
与其他替换方式相同:
set $path=%1
set $path1=%$path:main\=%
echo %$path%
set $path2=%$path1:c:=r:%
echo %$path2%
set $path3=%$path1:c:=z:%
echo %$path3%
echo bcompare %$path% %$path2%
echo bcompare %$path% %$path3%
答案 1 :(得分:0)
编辑arg2
变量以不包括主目录。
set arg1=%1
echo %arg1%
set arg2=%arg1:c:=r:%
echo %arg2%
set arg3=%arg1:c:=z:%
echo %arg3%
::Select which parts of the path you want from %%a (drive letter) to the file
for /f "tokens=1* delims=\" %%a in ("%arg1:"=%") do (set arg2="%%a\%%b\%%c\%%e")
:: Compare
:: C:\inetpub\wwwroot\Main\site\mytestfile.php
:: %%a\%%b \%%c \%%d \%%e \%%f
bcompare %arg1% %arg2%
bcompare %arg1% %arg3%