无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
查看: 17750|回复: 95
打印 上一主题 下一主题

[求助] 请大家帮忙写个批处理

  [复制链接]
1#
发表于 2020-11-25 16:18:26 | 显示全部楼层
本帖最后由 junyee 于 2020-11-26 08:33 编辑

看来好像都是在玩 sairen 的PE啊.
  1. @echo off

  2. set txt=1.txt

  3. for /f "delims=" %%i in (%txt%) do (
  4.   if "%%~xi"=="" (
  5.     mkdir ".\%%~pni"
  6.   ) else (
  7.     mkdir ".\%%~pi" 2>NUL
  8.     copy nul ".\%%~pnxi" /y
  9.   )
  10. )

  11. PAUSE&&GOTO :EOF
复制代码






点评

这个批处理把文件生成文件夹了,请帮忙修改一下,谢谢!  详情 回复 发表于 2020-11-25 17:55
谢谢,这个是第一个的吧?我试试  详情 回复 发表于 2020-11-25 17:13
回复

使用道具 举报

2#
发表于 2020-11-25 17:17:35 | 显示全部楼层
2013koko 发表于 2020-11-25 17:13
谢谢,这个是第一个的吧?我试试

第二个好像有第三方命令比较两个文本区别的.
不过并不能 区分父目录与子文件~~

第三个问题有点绕,有时间再琢磨你说的是什么.


~~~~
我现在已经变成单纯的伸手党了,如果有好的作品分享我一份哪~

点评

第三个问题其实就是处理Windows\System32\zh-CN下的.mui文件,想偷懒直接提取所有.mui,然后比较Windows\System32下的文件,删除多余的.mui  详情 回复 发表于 2020-11-25 17:26
我这正在当伸手党呢  详情 回复 发表于 2020-11-25 17:21
回复

使用道具 举报

3#
发表于 2020-11-25 17:35:46 | 显示全部楼层
2013koko 发表于 2020-11-25 17:26
第三个问题其实就是处理Windows\System32\zh-CN下的.mui文件,想偷懒直接提取所有.mui,然后比较Windows\ ...

还是没明白.

zh\zh-CN\a.mui
然后去
system32下找是否包含 文件a 吗? 没有的话删除 a.mui ?

点评

比如Windows\System32\zh-CN下有个cmd.exe.mui的文件,就去Windows\System32下查找是否存在cmd.exe文件,如果没有cmd.exe,就删除cmd.exe.mui  详情 回复 发表于 2020-11-25 17:44
是的  详情 回复 发表于 2020-11-25 17:40
回复

使用道具 举报

4#
发表于 2020-11-25 17:35:58 | 显示全部楼层
2013koko 发表于 2020-11-25 17:26
第三个问题其实就是处理Windows\System32\zh-CN下的.mui文件,想偷懒直接提取所有.mui,然后比较Windows\ ...

还是没明白.

zh\zh-CN\a.mui
然后去
system32下找是否包含 文件a 吗? 没有的话删除 a.mui ?
回复

使用道具 举报

5#
发表于 2020-11-25 18:58:50 | 显示全部楼层
本帖最后由 junyee 于 2020-11-26 10:42 编辑
2013koko 发表于 2020-11-25 17:44
比如Windows\System32\zh-CN下有个cmd.exe.mui的文件,就去Windows\System32下查找是否存在cmd.exe文件, ...

  1. @echo off

  2. set muiDir=C:\Windows\System32\zh-CN
  3. set sysDir=C:\Windows\System32
  4. REM set dbg=echo

  5. for /f "delims=" %%i in ('dir /s /b %muiDir%\*.mui') do (
  6.   if not exist “%sysDir%\%%~ni” %dbg% del /f /q “%%i”
  7. )

  8. pause
复制代码

点评

这个还是不对,没有效果,显示删除的是一些完全不存在的.mui文件?请再琢磨琢磨,很奇怪  详情 回复 发表于 2020-11-25 21:42
谢谢,我试试。  详情 回复 发表于 2020-11-25 19:23

评分

参与人数 1无忧币 +5 收起 理由
9zhmke + 5 很给力!

查看全部评分

回复

使用道具 举报

6#
发表于 2020-11-26 07:47:43 来自手机 | 显示全部楼层
2013koko 发表于 2020-11-25 23:59
想到个折衷的办法:先把目录中的空格删掉,生成后再改一下就可以了。
再次感谢!

我写的你没试吗,应该是有用的

点评

显示删除的是一些完全不存在的.mui文件,很奇怪,我的zh-cn下没有这些显示删除的.mui文件,难道强制读取的C:\windows下的?  详情 回复 发表于 2020-11-26 09:50
试过了的,可能您没有看到回复  详情 回复 发表于 2020-11-26 09:47
回复

使用道具 举报

7#
发表于 2020-11-26 09:52:19 | 显示全部楼层
2013koko 发表于 2020-11-26 09:50
显示删除的是一些完全不存在的.mui文件,很奇怪,我的zh-cn下没有这些显示删除的.mui文件,难道强制读取 ...

QQ私信我吧,论坛这样交流太慢了。

点评

已将我的QQ号发给您了  详情 回复 发表于 2020-11-26 09:57
回复

使用道具 举报

8#
发表于 2020-11-26 11:48:49 | 显示全部楼层


  1. @echo off &&setlocal enabledelayedexpansion

  2. set dbg=
  3. set txt=3.txt

  4. for /f "delims=" %%i in (%txt%) do (
  5.        
  6.   if "%%~xi"=="" (
  7.     mkdir ".\%%~pni"
  8.   ) else (
  9.     if not exist ".\%%~pi" (
  10.       set _dir=.\%%~pi
  11.       set _dir=!_dir:~0,-1!
  12.       del /f /q "!_dir!" 2>NUL
  13.       mkdir "!_dir!"
  14.     )
  15.     copy nul ".\%%~pnxi" /y
  16.   )

  17. )

  18. PAUSE&&GOTO :EOF
复制代码

点评

把文件列表的创建(目录列表和文件列表)和文件构建放在一个批处理里,问题就可以解决! 期待大神完成!  详情 回复 发表于 2020-11-26 14:06
这个批处理也很好,但是由于无法准确判断路径的底端是目录还是文件,还有些瑕疵。而窄大的批处理是有去实际路径中去检查的动作,因此能够准确创建。  详情 回复 发表于 2020-11-26 13:53
回复

使用道具 举报

9#
发表于 2020-11-26 16:30:12 | 显示全部楼层
本帖最后由 junyee 于 2020-11-27 18:36 编辑
2013koko 发表于 2020-11-26 14:06
把文件列表的创建(目录列表和文件列表)和文件构建放在一个批处理里,问题就可以解决!
期待大神完成!
  1. @echo off
  2. pushd %~dp0

  3. rem        先输出文件和目录列表,如:
  4. set srcDir=D:\winpe\wepe\
  5. set outDir=.\output

  6. goto :rebuild


  7. dir /s /b /ad  "%srcDir%" >sys_folder.list
  8. dir /s /b /a-d "%srcDir%" >sys_file.list

  9. :rebuild
  10. dir *.list

  11. for /f "delims=" %%i in (sys_folder.list) do mkdir "%outDir%\%%~pnxi"

  12. for /f "delims=" %%i in (sys_file.list) do (

  13.         mkdir "%outDir%\%%~pi" 2>NUL
  14.         copy nul "%outDir%\%%~pnxi" /y

  15. )


  16. pause &&goto :EOF
复制代码

回复

使用道具 举报

10#
发表于 2020-11-30 16:34:47 | 显示全部楼层
windows 有个 fc 命令,就可以完成你要的第2项任务.

fc 1.txt 2.txt >comp_1-2.txt

点评

这个不成功呢,附件请测试一下  详情 回复 发表于 2020-11-30 17:35
回复

使用道具 举报

11#
发表于 2020-11-30 19:06:50 | 显示全部楼层
2013koko 发表于 2020-11-30 17:35
这个不成功呢,附件请测试一下

确实不行, fc 不能支持太大的文件对比.

用 linux 工具吧.

下载一个 cmder ,
然后在 cmder 执行以下:

  1. @echo off

  2. pushd %~dp0
  3. path %CD%;%PATH%

  4. mkdir tmp 2>NUL
  5. sort 1.txt >tmp\1.txt
  6. sort 2.txt >tmp\2.txt

  7. pushd tmp
  8. diff 1.txt 2.txt>diff_12.txt
  9. findstr "^<" diff_12.txt >1-2.txt
  10. findstr "^>" diff_12.txt >2-1.txt
  11. comm -12 1.txt 2.txt >comm_12.txt
  12. REM sed -i 's/^< //g' 1-2.txt
  13. REM sed -i 's/^< //g' 2-1.txt
  14. popd

  15. <span style="line-height: 1.5;">pause && GOTO :EOF</span>
复制代码


以下是执行结果,
不同的结果在 1-2.txt /  2-1.txt ,注意要用计事本替换一下 "< " 和 "> "
相同的结果 comm_12.txt

TEMP.zip (652.05 KB, 下载次数: 3)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|捐助支持|无忧启动 ( 闽ICP备05002490号-1 )

闽公网安备 35020302032614号

GMT+8, 2024-4-29 05:45

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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