标题: [文件操作] 拖拽/拖放文件夹到bat上执行如何获取路径和文件夹名称 [打印本页]
作者: wnsdt 时间: 2016-5-27 11:23 标题: 拖拽/拖放文件夹到bat上执行如何获取路径和文件夹名称
本帖最后由 pcl_test 于 2018-4-20 17:11 编辑
本人想通过拖拽文件夹到批处理的方式获取文件夹的路径、文件夹名称。目前通过set变量,可实现拖拽获取路径,但文件夹名称如何也能拖拽获取?
对于文件夹名称,我能想到的思路是先拖拽获取路径,然后通过for /f,以路径中的“\”作为分隔符,但是却不知道如何获取路径的最后一列(文件夹名称),因为路径的列数是随机的,不能简单的tokens!
请大家帮助
版主请见谅,我发的帖子都是在论坛里找了好久找不到答案,所以才发帖,但是今天无意中找百度,有个博客跳转给了我答案,看来for的扩展变量真的太强大了,以后要好好学学
下面是命令,分享给大家:
@echo off
set /p name=
for %%a in (%name%) do echo %%~nxa
pause
以上代码在右键批处理-管理员权限运行,不支持拖拽
http://www.bathome.net/thread-29387-1-1.html,我之前也专门提问但未得到解决,不知道大家有没有好办法
作者: gawk 时间: 2016-5-27 13:00
- @echo off
- for %%a in (%1) do echo %%~nxa
- pause
复制代码
这样也能实现拖拽获取吧
但是这种拖拽的代码一定要特别小心,因为文件名里面的特殊字符可能导致代码出问题。例如文件名叫做:
a&b.txt
作者: wnsdt 时间: 2016-5-27 17:36
回复 2# gawk
你这个代码只能获得文件名且没有交互,批处理不能运行,只能拖拽文件夹到批处理本身,不过还是谢谢热心回答
作者: gawk 时间: 2016-5-27 19:27
回复 3# wnsdt
这。。。。。。你不是要解决拖拽的问题吗?没看到你说要求交互啊
作者: gawk 时间: 2016-5-27 19:28
你想实现的功能是不是这样:
拖拽的时候,可以获取。
如果没有拖拽,就提示用户输入。
是这个意思吗?
作者: bbaa 时间: 2016-5-29 15:52
@echo off
setlocal enabledelayedexpansion
set /p name=
for %%i in ("%name") do set name=%%~i
cd /d "%name%"
cd..
set "dir=!name:%cd%\=!"
set "dir=!dir:%cd%=!"
cd /d "%~dp0"
echo %dir%
pause
这鬼方法只有我才能想出来233
作者: wnsdt 时间: 2016-5-30 09:20
回复 6# bbaa
感谢热心回答,但是不支持批处理右键管理员权限下运行,此时拖拽是无法获取位置的
作者: bbaa 时间: 2016-5-30 18:13
回复 7# wnsdt
我倒是可以诶
作者: 小程936 时间: 2016-6-3 11:16
参考一下- @echo off
- color 9F
- mode con cols=50 lines=15
- title VHD VHDX 加载工具
- echo 您可以拖动VHD到本程序快捷方式上使用。
- echo 您也可以拖动VHD到本窗口后按回车使用。
- echo 还可以在下方输入VHD路径后按回车使用。
- if "%*%" == "" goto 2
- set vhd=%*%
- :1
- echo select vdisk file=^"%vhd%^">"%temp%\vhd.ini"
- echo attach vdisk>>"%temp%\vhd.ini"
- start diskpart.exe -s "%temp%\vhd.ini"
- exit
- :2
- set /p "vhd=>:"
- goto 1
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |