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

[文本处理] 批处理开启延迟变量后,无法下载带有感叹号的文件

[复制链接]
发表于 2018-11-26 14:43:24 | 显示全部楼层 |阅读模式
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set name=C:\Users\Administrator\Desktop\1\1\

  4. for /f "tokens=*" %%a in ('type test.txt') do (
  5. echo,%name%%%a>>2.txt
  6. )

  7. for /f "tokens=*" %%i in ('type 2.txt') do (
  8. xcopy "%%i" C:\Users\Administrator\Desktop\1\2\
  9. if !errorlevel! neq 0 (echo %%i>>失败.txt)
  10. )

  11. del 2.txt
  12. pause
复制代码
这是我弄的一个思路,可以正常复制文件,并且复制失败的时候会保留失败的路径单独放到一个txt文档。但是唯一的缺点是由于开启了延迟变量,导致屏蔽了带有感叹号的文件,比如我下载2!2.doc,他就会读取成22.doc,然后就理所当然的无法下载了。不仅是文件名,路径带有感叹号也是。

我查过有延迟变量的开启和关闭方法,但是如果把开启和关闭的语句写在循环里就有问题,具体情况请大佬复制代码去试试吧
发表于 2018-11-26 15:43:28 | 显示全部楼层
本帖最后由 cfwyy77_bat 于 2018-11-26 16:10 编辑

发代码 就发<>code块就好了,不需要发图的。
发表于 2018-11-26 15:49:18 | 显示全部楼层
本帖最后由 yhcfsr 于 2018-11-28 14:22 编辑

  1. @echo off
  2. set "name=C:\Users\Administrator\Desktop\1\1"

  3. for /f "tokens=*" %%i in ('type test.txt') do (
  4.         xcopy "%name%%%i" "C:\Users\Administrator\Desktop\1\2" /y||echo %name%%%i>>失败.txt
  5. )
复制代码
 楼主| 发表于 2018-11-28 10:09:32 | 显示全部楼层
回复 3# yhcfsr


    一开始我也是这么想的,判定!errorlevel! 前后分别加入开启和关闭延迟变量的语句,讲道理应该是能用的,但遗憾的是。。。。。用不了啊!能下载带感叹号的样张,但是无法检测并记录失败的样张(比如我在test.txt写一个不存在文件的名字)
发表于 2018-11-28 14:21:26 | 显示全部楼层
回复 4# 阿帕茶


    这样啊,2楼代码我改了下,你试试
 楼主| 发表于 2018-11-29 14:26:55 | 显示全部楼层
回复 5# yhcfsr


    卧槽可以了,谢谢大佬,到底是哪里的问题(萌新有点不懂关键)
发表于 2018-12-29 18:16:34 | 显示全部楼层
回复 6# 阿帕茶


    开启变量延迟扩展之后感叹号用于引用变量,可以用转义符^将感叹号转义为文本
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-21 01:21 , Processed in 0.030173 second(s), 16 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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