找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 34489|回复: 8

[文件操作] 拖拽/拖放文件夹到bat上执行如何获取路径和文件夹名称

[复制链接]
发表于 2016-5-27 11:23:17 | 显示全部楼层 |阅读模式
本帖最后由 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,我之前也专门提问但未得到解决,不知道大家有没有好办法

评分

参与人数 1PB -6 收起 理由
pcl_test -6 未按版规发帖

查看全部评分

发表于 2016-5-27 13:00:52 | 显示全部楼层
  1. @echo off
  2. for %%a in (%1) do echo %%~nxa
  3. pause
复制代码
这样也能实现拖拽获取吧

但是这种拖拽的代码一定要特别小心,因为文件名里面的特殊字符可能导致代码出问题。例如文件名叫做:
a&b.txt
 楼主| 发表于 2016-5-27 17:36:44 | 显示全部楼层
回复 2# gawk


    你这个代码只能获得文件名且没有交互,批处理不能运行,只能拖拽文件夹到批处理本身,不过还是谢谢热心回答
发表于 2016-5-27 19:27:22 | 显示全部楼层
回复 3# wnsdt


    这。。。。。。你不是要解决拖拽的问题吗?没看到你说要求交互啊
发表于 2016-5-27 19:28:55 | 显示全部楼层
你想实现的功能是不是这样:
拖拽的时候,可以获取。
如果没有拖拽,就提示用户输入。

是这个意思吗?
发表于 2016-5-29 15:52:28 | 显示全部楼层
@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
 楼主| 发表于 2016-5-30 09:20:34 | 显示全部楼层
回复 6# bbaa


    感谢热心回答,但是不支持批处理右键管理员权限下运行,此时拖拽是无法获取位置的
发表于 2016-5-30 18:13:19 | 显示全部楼层
回复 7# wnsdt


    我倒是可以诶
发表于 2016-6-3 11:16:52 | 显示全部楼层
参考一下
  1. @echo off
  2. color 9F
  3. mode con cols=50 lines=15
  4. title VHD VHDX 加载工具
  5. echo 您可以拖动VHD到本程序快捷方式上使用。
  6. echo 您也可以拖动VHD到本窗口后按回车使用。
  7. echo 还可以在下方输入VHD路径后按回车使用。
  8. if "%*%" == "" goto 2
  9. set vhd=%*%
  10. :1
  11. echo select vdisk file=^"%vhd%^">"%temp%\vhd.ini"
  12. echo attach vdisk>>"%temp%\vhd.ini"
  13. start diskpart.exe -s "%temp%\vhd.ini"
  14. exit
  15. :2
  16. set /p "vhd=>:"
  17. goto 1
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 21:25 , Processed in 0.010901 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表