通过使用命令从d一个文件夹:驱动地带盘符
for /f "delims=" %%d in ('cd') do set pathdrv=%%d
echo %pathdrv%
我得到“d:\某个文件夹”。我想编写批处理命令在驱动器的根目录中创建自动运行文件。请帮我去掉驱动器盘符“d:”,这样输出结果就是“\ some folder”,还有什么额外的改变来去除“\”。
通过使用命令从d一个文件夹:驱动地带盘符
for /f "delims=" %%d in ('cd') do set pathdrv=%%d
echo %pathdrv%
我得到“d:\某个文件夹”。我想编写批处理命令在驱动器的根目录中创建自动运行文件。请帮我去掉驱动器盘符“d:”,这样输出结果就是“\ some folder”,还有什么额外的改变来去除“\”。
简短的回答:使用子语法前两个字符从%cd%
伪变量剥离:
%cd:~2%
要删除第一个反斜杠太:
%cd:~3%
这可靠,即使工作控制台窗口设置为栅格字体时的Unicode路径。
再回应,详细介绍了一些更多的选择(其中没有工作不够好):
对于参数的批处理文件,你可以使用特殊的语法%p1
,它给你的第一个参数的路径给定一个批处理文件(见this answer)。
这不起作用与环境变量的方式相同,但有两个技巧可以使用:
使用子程序:
call :foo "%cd%"
...
goto :eof
:foo
set result=%~p1
goto :eof
子程序可以有参数,就像批文件。
使用for
:
for %%d in ("%cd%") do set mypath=%%~pd
但是,这两个变种别当
的问题,这是得到控制而环境变量可以持有统一就好了,你将进入的问题,一旦你尝试一个命令行设置,其套他们。上面详述的每个选项都依赖于执行命令前的某种输出。这有一个问题,即Unicode不会保留,而是由?
取代。唯一的例外是在这个答案的最开始的子字符串变体,它甚至在光栅字体的情况下在路径中保留Unicode字符。
盘符:
%CD:~0,1%
完整的驱动器名(含冒号):
%CD:~0,2%
嗯,对不起。当你的答案扩展时,我有点被带走了。现在的答案现在完全不同了,这是我写作过程中不幸的副作用。随时恢复。 – Joey 2010-01-06 07:33:28