标题: [文本处理] 【已解决】插入U盘自动复制文件的批处理代码为什么失败? [打印本页]
作者: 7016427 时间: 2015-7-6 21:58 标题: 【已解决】插入U盘自动复制文件的批处理代码为什么失败?
本帖最后由 7016427 于 2015-7-8 20:47 编辑
- @echo off
- for /f "skip=1 tokens=1" %%i in ('wmic logicaldisk where "description='可移动磁盘'" get deviceid') do (
- set "DriveU=%%i"
- if /i "%%i"=="" (echo 你没有插入u盘,请插入u盘) else (copy e:\日报.xls/y %DriveU%\
- )
- )
- 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
抛砖引玉,看看大神还有没有更简单的方法- @echo off
- wmic logicaldisk where "description='可移动磁盘'" get deviceid |find "DeviceID"
- if %errorlevel%==1 echo 你没有插入u盘,请插入u盘&goto :eof
- 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 变量是否存在即可- @echo off
- for /f "skip=1" %%i in ('wmic logicaldisk where "description='可移动磁盘'" get deviceid') do (
- set "DriveU=%%i"
- copy e:\日报.xls/y %%i\
- )
- if not defined DriveU echo 你没有插入u盘,请插入u盘
- pause
复制代码
作者: pcl_test 时间: 2015-7-7 19:00
- @echo off
- ver|find "5.1" >nul&&set "str=可移动磁盘"||set "str=Removable Disk"
- for /f %%a in ('wmic logicaldisk where description^="%str%" get deviceid 2^>nul^|findstr "[A-Z]:"') do set "u=%%a"
- if not defined u (echo;你没有插入u盘,请插入u盘) else (copy /y "E:\日报.xls" %u%\)
- ping -n 2 0 >nul&exit
复制代码
作者: 会飞的蜗牛丶 时间: 2015-7-8 16:23
- @echo off
- for /f "skip=1 tokens=1" %%i in ('wmic logicaldisk where "description='可移动磁盘'" get deviceid^|^|echo 没盘') do (
- set "DriveU=%%i"
- if /i "%%i"=="" (echo 你没有插入u盘,请插入u盘) else (copy e:\日报.xls/y %DriveU%\
- )
- )
- pause
复制代码
作者: 会飞的蜗牛丶 时间: 2015-7-8 16:25
回复 11# 会飞的蜗牛丶
额,这个我回复的不仔细,大概就是in () 里面的执行结果如果为空DO后面的动作就没法做了, 可以用||来执行出一个结果。然后再去判断处理 这里要转义
欢迎光临 批处理之家 (http://bathome.net./) |
Powered by Discuz! 7.2 |