找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 32334|回复: 11

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

[复制链接]
发表于 2015-7-6 21:58:45 | 显示全部楼层 |阅读模式
本帖最后由 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盘”

谢谢各位老师!

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-7-6 23:26:45 | 显示全部楼层
。。。。。
若没有可移动硬盘,则 wmic 的输出为空,那么 do 后面的内容怎么会执行呢?
 楼主| 发表于 2015-7-7 06:56:47 | 显示全部楼层

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

[未解决]回复 2# CrLf
if /i "%%i"=="" (echo 你没有插入u盘,请插入u盘) else (copy e:\日报.xls/y %DriveU%\
你好!主要是红色语句没有生效?
发表于 2015-7-7 09:12:25 | 显示全部楼层
回复 3# 7016427


    你是什么系统?如果是win7的话,就不叫“可移动磁盘”了,,而是“Removable Disk”
 楼主| 发表于 2015-7-7 12:45:28 | 显示全部楼层
回复 4# Linuxer
我是xp系统
发表于 2015-7-7 16:10:58 | 显示全部楼层
回复 3# 7016427


    你没明白我的意思,wmic 要是没有输出,for /f 就不会执行 do 后面代码,所以红字部分就成了空逻辑了
 楼主| 发表于 2015-7-7 18:12:28 | 显示全部楼层
[未解决]回复 6# CrLf
请问老师,怎么改?
发表于 2015-7-7 18:15:29 | 显示全部楼层
抛砖引玉,看看大神还有没有更简单的方法
  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技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2015-7-7 18:30:03 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2015-7-7 19:00:21 | 显示全部楼层
  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技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2015-7-8 16:23:40 | 显示全部楼层
  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技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

发表于 2015-7-8 16:25:25 | 显示全部楼层
回复 11# 会飞的蜗牛丶


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

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-18 22:45 , Processed in 0.020588 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表