Board logo

标题: [文件操作] 批处理怎样实现拖拽/拖放多个文件到CMD窗口并显示每一个文件名? [打印本页]

作者: hrhktkbzyy    时间: 2011-5-9 23:26     标题: 批处理怎样实现拖拽/拖放多个文件到CMD窗口并显示每一个文件名?

本帖最后由 pcl_test 于 2018-4-20 17:05 编辑

RT。查阅了前人的一个帖子:
  1. @echo off
  2. set str=%*
  3. set "str=%str:"=%"
  4. set "str= %str%"
  5. call set "str=%%str: %~d1=" "%~d1%%"
  6. for %%i in ("%str%") do echo %%i
  7. pause
复制代码
其中
  1. set str=%*
  2. set "str=%str:"=%"
  3. set "str= %str%"
  4. call set "str=%%str: %~d1=" "%~d1%%"
复制代码
几句是什么意思啊。这个版本为什么第一个字符串变为“”。
希望大虾帮助一下,在此谢过!
作者: hanyeguxing    时间: 2011-5-9 23:40

本帖最后由 hanyeguxing 于 2011-5-9 23:48 编辑

忽略敏感字符&等的问题:
  1. @echo off
  2. :a
  3. echo;"%~1"
  4. shift
  5. if not "%1"=="" goto:a
  6. pause
复制代码

作者: hrhktkbzyy    时间: 2011-5-10 12:59

2# hanyeguxing
谢谢版主的指教。还有一个问题想请教,shift命令为什么当存在空格或者&等字符的时候就失效了
作者: CrLf    时间: 2011-5-10 13:13

2# hanyeguxing
谢谢版主的指教。还有一个问题想请教,shift命令为什么当存在空格或者&等字符的时候就失效了
hrhktkbzyy 发表于 2011-5-10 12:59

空格也会出错么?
&的问题,错不在于shift,而在于%1,详见挑战区旧帖
作者: hrhktkbzyy    时间: 2011-5-10 13:48

本帖最后由 hrhktkbzyy 于 2011-5-10 13:59 编辑

4# zm900612
我测试空格是有问题。
当文件名有空格的时候,拖放文件后命令行窗口一闪即过,没有执行pause。系统是 XP SP3
作者: hrhktkbzyy    时间: 2011-5-10 14:16

本帖最后由 hrhktkbzyy 于 2011-5-10 14:18 编辑

2# hanyeguxing
找到了问题的原因,还是在文件名存在空格的时候自动添加引号的问题,改为:
  1. if not "%~1"=="" goto:a
复制代码
问题解决。
再次感谢版主的热心指导~
作者: smss    时间: 2019-5-10 15:02

hanyeguxing
找到了问题的原因,还是在文件名存在空格的时候自动添加引号的问题,改为:问题解决。
再 ...
hrhktkbzyy 发表于 2011-5-10 14:16

文件名中有空就需要在把文件名加上"" 如"C:\Program Files"




欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2