Board logo

标题: [文件操作] 批处理怎么删除指定文件(没有后缀名)? [打印本页]

作者: rpg2813    时间: 2021-1-9 02:36     标题: 批处理怎么删除指定文件(没有后缀名)?

我有文件的路径,例如:C:\a\b\c
注意c是一个没有后缀名的文件
我有个文件清单(200多个要删除)
del C:\a\b\c
C:\a\b\下有的不止一个文件
所以还是得精确删除
只是系统会默认c为文件夹……
作者: terse    时间: 2021-1-9 10:46

C:\a\b\ 文件夹下运行
为防误删 请备份文件夹后运行
  1. for %%i in (*.) do del "%%i"
复制代码

作者: rpg2813    时间: 2021-1-9 11:17

回复 2# terse


    感谢回复,可是我有200多个不同路径……请教有没有更好的方法
作者: rpg2813    时间: 2021-1-9 11:22

如图,情况这样的,部署了火绒企业版
他是把补丁文件命名为sha-1值(没有后缀名)
然后一些补丁终端打不上去
后来发现是文件不完整造成的(就是sha-1值不对)
我现在通过各种方法弄到了这些错误sha-1值的文件的路径清单
现在就是怎么把这些文件一次性删掉的问题
作者: qixiaobin0715    时间: 2021-1-9 11:45

本帖最后由 qixiaobin0715 于 2021-1-10 08:08 编辑

回复 4# rpg2813
将文件清单存为编码ANSI的a.txt文件,与下面的bat代码放在同一个文件夹:
  1. echo off
  2. for /f "delims=" %%a in (a.txt) do (
  3.     for %%i in ("%%a") do del /a/f %%i
  4. )
  5. pause
复制代码

作者: rpg2813    时间: 2021-1-9 14:34

回复 5# qixiaobin0715


    感谢,火绒工程师在排查这个问题,因为正常来说用工具下载以及同步到服务器是经过sha-1值校验的
呃,他们希望我把这些文件单独保存一下……
就是把这些文件复制(剪切)到一个新的文件夹就好
作者: rpg2813    时间: 2021-1-9 14:39

还有如果对a.txt的列表排除删除(就是除了这些清单的删除)又是怎么弄?
作者: qixiaobin0715    时间: 2021-1-9 15:51

本帖最后由 qixiaobin0715 于 2021-1-9 16:00 编辑
  1. @echo off
  2. md C:\folder1
  3. for /f "delims=" %%a in (a.txt) do (
  4.     for %%i in ("%%a") do move "%%i" "C:\folder1"
  5. )
  6. pause
复制代码
回复 7# rpg2813
作者: rpg2813    时间: 2021-1-9 15:52

回复 5# qixiaobin0715


    代码不知道哪里不对,就是那个40位数字的是文件,批处理总把其认为是路径
作者: terse    时间: 2021-1-9 18:06

回复 3# rpg2813
试一下加个R参数  搜索子目录
作者: rpg2813    时间: 2021-1-10 00:09

回复 10# terse


    怎么加……
作者: terse    时间: 2021-1-10 00:53

看显示的是否是你想得到的文件 如果可以去掉第二行ECHO
另外 判断目录应该可以的吧 IF EXIST C:\A\B\C\
  1. @echo off
  2. for /r %%i in (*.) do echo del "%%i"
  3. pause
复制代码
回复 11# rpg2813
作者: qixiaobin0715    时间: 2021-1-10 08:12

回复 9# rpg2813
我觉得是你的文件属性问题,用强制删除del /a/f。5楼代码再试试。
作者: qixiaobin0715    时间: 2021-1-10 08:49

回复 6# rpg2813
你的文件可能是只读属性,如果要单独保存,将8楼代码的move改为copy试试;如果要move的话,要在move前修改文件属性,加一条attribute -r
作者: rpg2813    时间: 2021-1-10 16:07

本帖最后由 rpg2813 于 2021-1-10 19:14 编辑

回复 14# qixiaobin0715


    5楼的代码执行起来没有效果,加了13楼代码

提示:系统找不到指定的路径
还是把那个40位的东西当做了文件夹,而不是文件,文件我也看了,不是只读的


8楼的代码执行提示,命令语法不正确

我在服务器操作的,和这没关系吧?2012系统
作者: rpg2813    时间: 2021-1-10 19:10

回复 12# terse


    我发的4楼,那些00/de/后面的40位字母的是文件,而且00/de/下面可能有别的文件,我是希望针对清单来删除
作者: qixiaobin0715    时间: 2021-1-10 21:26

回复 15# rpg2813
你把其中一个路径放到下面代码中试试,看看是哪里的问题:
  1. @echo off
  2.     for %%i in ("路径") do del /a/f "%%i"
  3. pause
复制代码

作者: qixiaobin0715    时间: 2021-1-10 23:17

还要仔细检查一下,你得到的路径是否完全正确。
作者: terse    时间: 2021-1-10 23:45

回复 16# rpg2813
5楼代码不行吗 查一下其他因素呢
作者: rpg2813    时间: 2021-1-11 00:56

回复 17# qixiaobin0715


    依然显示找不到系统路径

而且我把其中文件改名成     a.txt                 用    del /q /s d:\test\a.txt   也不行

不知道到底什么情况
作者: WHY    时间: 2021-1-11 09:18

本帖最后由 WHY 于 2021-1-11 09:24 编辑

真的好神奇。
怀疑是文件清单结尾带有不可见字符,如:多余的空格、tab符、多余的回车符等。
试试用Notepad++、UltraEdit 等16进制文本编辑软件打开看看吧。
可以的话用附件发一个文件清单让大家测试。
作者: rpg2813    时间: 2021-1-11 18:12

我把00和oa两个文件夹放到百度网盘了,大概50m
然后还有我的sha-1值校对表,我是用hashtool批量算出来的值
校对“错误”的需要删除掉

链接:https://pan.baidu.com/s/1Nn5wK4ibxyZPdqzxU1zThQ
提取码:1234
作者: WHY    时间: 2021-1-11 22:26

本帖最后由 WHY 于 2021-1-12 09:20 编辑

文件列表是 Excel 文件,估计是转换成 txt 的时候出问题了。
以下脚本保存为 Test.bat,编码选 ANSI,与 哈希值校对.xlsx 存放在同一个目录,xlsx不需要转换成txt
右键单击 Test.bat,选择 "以管理员身份运行"。我测试没有问题。
  1. @if(0)==(0) echo off
  2. for /f "tokens=*" %%i in ('cscript //nologo //e:jscript "%~f0" "%~dp0哈希值校对.xlsx"') do (
  3.     if exist "%%~fi" del /f /a /q "%%~fi"
  4. )
  5. pause & exit
  6. @end
  7. var objExcel = new ActiveXObject('Excel.Application');
  8. objExcel.Visible = true;
  9. //objExcel.DisplayAlerts = false;
  10. var objBook  = objExcel.WorkBooks.Open(WSH.Arguments(0));
  11. var objSheet = objBook.WorkSheets(1);
  12. var rows = objSheet.UsedRange.Rows.Count + 1;       //sheet1 行数
  13. for(var i=1; i<=rows; i++){
  14.     var v2 = objSheet.Cells(i, 2).Value;            //第2列,文件路径
  15.     var v5 = objSheet.Cells(i, 5).Value;            //第5列,校验结果
  16.     if( v2 != null && v5 == '错误' ) WSH.Echo( v2 );
  17. }
  18. objBook.Close();
  19. objExcel.Quit();
复制代码

作者: rpg2813    时间: 2021-1-12 12:36

文件列表是 Excel 文件,估计是转换成 txt 的时候出问题了。
以下脚本保存为 Test.bat,编码选 ANSI,与 哈 ...
WHY 发表于 2021-1-11 22:26



    大神,请收下我的膝盖,问题解决,然后重新比对了一遍,完全正确~~

但是代码只能看懂一半,还得逐步消化一下(特别是批处理居然可以操纵xlsx,把我震惊了)
作者: Batcher    时间: 2021-1-12 14:19

回复 24# rpg2813


其实真正操作xlsx的不是BAT而是:
cscript //nologo //e:jscript "%~f0" "%~dp0哈希值校对.xlsx"
作者: rpg2813    时间: 2021-1-13 01:44

回复  rpg2813


其实真正操作xlsx的不是BAT而是:
cscript //nologo //e:jscript "%~f0" "%~dp0哈希值 ...
Batcher 发表于 2021-1-12 14:19



    楼上的都是大神




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