Board logo

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

作者: 7016427    时间: 2015-7-6 21:58     标题: 【已解决】插入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盘”

谢谢各位老师!
作者: CrLf    时间: 2015-7-6 23:26

。。。。。
若没有可移动硬盘,则 wmic 的输出为空,那么 do 后面的内容怎么会执行呢?
作者: 7016427    时间: 2015-7-7 06:56     标题: RE: 在线请教老师,这个代码为什么失败?

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

回复 3# 7016427


    你是什么系统?如果是win7的话,就不叫“可移动磁盘”了,,而是“Removable Disk”
作者: 7016427    时间: 2015-7-7 12:45

回复 4# Linuxer
我是xp系统
作者: CrLf    时间: 2015-7-7 16:10

回复 3# 7016427


    你没明白我的意思,wmic 要是没有输出,for /f 就不会执行 do 后面代码,所以红字部分就成了空逻辑了
作者: 7016427    时间: 2015-7-7 18:12

[未解决]回复 6# CrLf
请问老师,怎么改?
作者: flyinnet9    时间: 2015-7-7 18:15

抛砖引玉,看看大神还有没有更简单的方法
  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\
复制代码

作者: CrLf    时间: 2015-7-7 18:30

本帖最后由 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
复制代码

作者: pcl_test    时间: 2015-7-7 19:00

  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
复制代码

作者: 会飞的蜗牛丶    时间: 2015-7-8 16:23

  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
复制代码

作者: 会飞的蜗牛丶    时间: 2015-7-8 16:25

回复 11# 会飞的蜗牛丶


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




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