批处理 - 区分文件和路径?

时间:2013-04-02 19:37:19

标签: batch-file

@echo off
set /p UserInput= What file would you like to hide?

cd %UserInput%

所以我想制作一个批处理文件,当运行时询问用户一个文件,它将隐藏在随机文件夹的迷宫中。让我解释一下。

假设我输入C:\Program Files\Steam\butts.exe

它会在C:\Program Files\Steam

中创建一个新目录

这就是我被困住的地方。如何从C:\Program Files\Steam找到C:\Program Files\Steam\butts.exe

3 个答案:

答案 0 :(得分:2)

哈!最快捷,最简单的方法就是在最后添加\..。例如,在我的桌面上,我有一个名为weather.xml的文件。如果我这样做:

dir c:\users\me\Desktop\weather.xml\..

...我最终得到了我桌面的目录列表。 :)

所以你可以用

完成你需要的东西
cd %UserInput%\..

否则,您可以将路径传递到for循环或call :label到子例程以最终%%~dpX。有关详细信息,请参阅help forhelp call的最后几页。


如果您想要更加顽固,而不是要求用户输入path\to\file来设置%UserInput%,您可以使用powershell来启动File... Open种文件选择器。有关详细信息,请参阅this answer

答案 1 :(得分:2)

试试这个:

@echo off&setlocal 
for %%i in ("C:\Program Files\Steam\butts.exe") do set "steampath=%%~dpi"
:: remove last backslash
echo %steampath:~0,-1%

答案 2 :(得分:1)

您可以使用此批次

@echo off
set /p UserInput=What file would you like to hide?
for %%i in ("%UserInput%") do set path="%%~dpi"
cd %path%