[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 拖拽/拖放文件夹到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,我之前也专门提问但未得到解决,不知道大家有没有好办法
1

评分人数

  1. @echo off
  2. for %%a in (%1) do echo %%~nxa
  3. pause
复制代码
这样也能实现拖拽获取吧

但是这种拖拽的代码一定要特别小心,因为文件名里面的特殊字符可能导致代码出问题。例如文件名叫做:
a&b.txt
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

回复 2# gawk


    你这个代码只能获得文件名且没有交互,批处理不能运行,只能拖拽文件夹到批处理本身,不过还是谢谢热心回答

TOP

回复 3# wnsdt


    这。。。。。。你不是要解决拖拽的问题吗?没看到你说要求交互啊
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

你想实现的功能是不是这样:
拖拽的时候,可以获取。
如果没有拖拽,就提示用户输入。

是这个意思吗?
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

@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

TOP

回复 6# bbaa


    感谢热心回答,但是不支持批处理右键管理员权限下运行,此时拖拽是无法获取位置的

TOP

回复 7# wnsdt


    我倒是可以诶

TOP

参考一下
  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
复制代码

TOP

返回列表