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

[文本处理] 【已解决】插入U盘自动复制文件的批处理代码为什么失败?

本帖最后由 7016427 于 2015-7-8 20:47 编辑
  1. @echo off
  2. for /f "skip=1 tokens=1" %%i in ('wmic logicaldisk where "description='可移动磁盘'" get deviceid') do (
  3. set "DriveU=%%i"
  4. if /i "%%i"=="" (echo 你没有插入u盘,请插入u盘) else (copy e:\日报.xls/y %DriveU%\
  5. )
  6. )
  7. pause
复制代码
存在问题:当没有插入U盘时,不提示“你没有插入u盘,请插入u盘”

谢谢各位老师!
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

。。。。。
若没有可移动硬盘,则 wmic 的输出为空,那么 do 后面的内容怎么会执行呢?

TOP

RE: 在线请教老师,这个代码为什么失败?

[未解决]回复 2# CrLf
if /i "%%i"=="" (echo 你没有插入u盘,请插入u盘) else (copy e:\日报.xls/y %DriveU%\
你好!主要是红色语句没有生效?

TOP

回复 3# 7016427


    你是什么系统?如果是win7的话,就不叫“可移动磁盘”了,,而是“Removable Disk”
问题解决后,请在标题前面注明[已解决],并给回答者加分——化繁为简,提高工作效率!

TOP

回复 4# Linuxer
我是xp系统

TOP

回复 3# 7016427


    你没明白我的意思,wmic 要是没有输出,for /f 就不会执行 do 后面代码,所以红字部分就成了空逻辑了

TOP

[未解决]回复 6# CrLf
请问老师,怎么改?

TOP

抛砖引玉,看看大神还有没有更简单的方法
  1. @echo off
  2. wmic logicaldisk where "description='可移动磁盘'" get deviceid |find "DeviceID"
  3. if %errorlevel%==1 echo 你没有插入u盘,请插入u盘&goto :eof
  4. for /f "skip=1 tokens=1" %%a in ('wmic logicaldisk where "description='可移动磁盘'" get deviceid') do copy /y e:\日报.xls %%a\
复制代码
1

评分人数

TOP

本帖最后由 CrLf 于 2015-7-7 18:31 编辑

既然执行时会赋值给 DriveU,那就判断 DriveU 变量是否存在即可
  1. @echo off
  2. for /f "skip=1" %%i in ('wmic logicaldisk where "description='可移动磁盘'" get deviceid') do (
  3. set "DriveU=%%i"
  4. copy e:\日报.xls/y %%i\
  5. )
  6. if not defined DriveU echo 你没有插入u盘,请插入u盘
  7. pause
复制代码
1

评分人数

TOP

  1. @echo off
  2. ver|find "5.1" >nul&&set "str=可移动磁盘"||set "str=Removable Disk"
  3. for /f %%a in ('wmic logicaldisk where description^="%str%" get deviceid 2^>nul^|findstr "[A-Z]:"') do set "u=%%a"
  4. if not defined u (echo;你没有插入u盘,请插入u盘) else (copy /y "E:\日报.xls" %u%\)
  5. ping -n 2 0 >nul&exit
复制代码
1

评分人数

TOP

  1. @echo off
  2. for /f "skip=1 tokens=1" %%i in ('wmic logicaldisk where "description='可移动磁盘'" get deviceid^|^|echo 没盘') do (
  3. set "DriveU=%%i"
  4. if /i "%%i"=="" (echo 你没有插入u盘,请插入u盘) else (copy e:\日报.xls/y %DriveU%\
  5. )
  6. )
  7. pause
复制代码
1

评分人数

TOP

回复 11# 会飞的蜗牛丶


    额,这个我回复的不仔细,大概就是in () 里面的执行结果如果为空DO后面的动作就没法做了, 可以用||来执行出一个结果。然后再去判断处理 这里要转义

TOP

返回列表