无忧启动论坛

 找回密码
 注册
搜索
系统gho:最纯净好用系统下载站广告联系 微信:wuyouceo QQ:184822951
楼主: 2013koko

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

  [复制链接]
 楼主| 发表于 2020-11-26 09:50:34 | 显示全部楼层
junyee 发表于 2020-11-26 07:47
我写的你没试吗,应该是有用的

显示删除的是一些完全不存在的.mui文件,很奇怪,我的zh-cn下没有这些显示删除的.mui文件,难道强制读取的C:\windows下的?

点评

QQ私信我吧,论坛这样交流太慢了。  详情 回复 发表于 2020-11-26 09:52
回复

使用道具 举报

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

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

点评

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

使用道具 举报

 楼主| 发表于 2020-11-26 09:57:55 | 显示全部楼层
junyee 发表于 2020-11-26 09:52
QQ私信我吧,论坛这样交流太慢了。

已将我的QQ号发给您了
回复

使用道具 举报

发表于 2020-11-26 11:03:19 | 显示全部楼层
本帖最后由 窄口牛 于 2020-11-26 14:45 编辑
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. reg query HKU\S-1-5-20>nul || echo;CreateObject^("Shell.Application"^).ShellExecute "%~f0", "", "", "runas", 1 > "%temp%\getadmin.vbs" && cscript //b "%temp%\getadmin.vbs" && exit /b & del "%temp%\getadmin.vbs" /f /q>nul 2>nul
  4. pushd "%CD%"&& CD /D "%~dp0"
  5. FOR /f "delims=" %%a IN (ls.txt) DO (
  6. if exist %%a\ (md "%USERPROFILE%\desktop\结构目录%%~npxa") else md "%USERPROFILE%\desktop\结构目录%%~pa"&cd.>"%USERPROFILE%\desktop\结构目录%%~npxa"
  7. )
  8. pause>nul
复制代码


点评

感谢大侠精益求精,除了2个目录未知原因不能创建,其余完全正确,完美!  详情 回复 发表于 2020-11-26 13:30
回复

使用道具 举报

发表于 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
回复

使用道具 举报

 楼主| 发表于 2020-11-26 13:30:05 | 显示全部楼层

感谢大侠精益求精,除了2个目录未知原因不能创建,其余完全正确,完美!
sshot-2.png
回复

使用道具 举报

 楼主| 发表于 2020-11-26 13:53:32 | 显示全部楼层

这个批处理也很好,但是由于无法准确判断路径的底端是目录还是文件,还有些瑕疵。而窄大的批处理是有去实际路径中去检查的动作,因此能够准确创建。
回复

使用道具 举报

 楼主| 发表于 2020-11-26 14:06:22 | 显示全部楼层

把文件列表的创建(目录列表和文件列表)和文件构建放在一个批处理里,问题就可以解决!
期待大神完成!
回复

使用道具 举报

发表于 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
复制代码

回复

使用道具 举报

 楼主| 发表于 2020-11-26 18:57:39 | 显示全部楼层
各路大神,第一个差不多了,第二第三哪位有空的请动动手指,不胜感谢
回复

使用道具 举报

发表于 2020-11-26 20:40:43 | 显示全部楼层
第三个要求有个方法不过需要gnuwin32的一个小程序sed.exe

for /f  %%i  in  ('dir/b B目录 ^|sed.exe -e  s/\.mui//g')  do (
if not exist A目录\%%i  del B目录\%%i.mui
)

点评

感谢帮助!但感觉这个用批处理应该可以完成吧,不想上工具  详情 回复 发表于 2020-11-26 21:37
回复

使用道具 举报

 楼主| 发表于 2020-11-26 21:37:05 | 显示全部楼层
my9823 发表于 2020-11-26 20:40
第三个要求有个方法不过需要gnuwin32的一个小程序sed.exe

for /f  %%i  in  ('dir/b B目录 ^|sed.exe -e ...

感谢帮助!但感觉这个用批处理应该可以完成吧,不想上工具
回复

使用道具 举报

发表于 2020-11-27 07:02:01 来自手机 | 显示全部楼层
把你那两个有问题文件夹的打包上来看看。要知道,对于文件文件夹判断都是基于实际存在路径,如果是单纯的列表文件,那还得按照.扩展名来干判断。你这三个要求除了二感觉别的好像没有使用场景。

点评

这两个文件夹系统里应该都有的,您在c盘里看下  详情 回复 发表于 2020-11-27 15:39
这个批处理就是为了构建一个完整pe的空文件框架用于BC做文件夹比对,可能是我表达不好,应该如junyee所说把列表创建包含在这个批处理之中,并且用dir/s /b /ad 和/a-d,分别创建文件夹列表和文件列表来构建  详情 回复 发表于 2020-11-27 15:32
回复

使用道具 举报

发表于 2020-11-27 08:50:55 来自手机 | 显示全部楼层
我觉得第二个要求,你应该分几步进行:先dir/a:d/b/s分别产生两个目录的目录列表进行比较得到B目录中有但A目录中没有的文件夹的列表来处理目录的差异。再dir/b/s得到A和B两目录的具体文件的列表,比较产生B目录存在但A目录中不存在的所有具体文件列表,再把这个列表中包含差异目录的行删除,然后比较得到同名目录是否有不同文件。

点评

能帮忙写个吗?  详情 回复 发表于 2020-11-27 15:42
回复

使用道具 举报

 楼主| 发表于 2020-11-27 15:32:25 | 显示全部楼层
窄口牛 发表于 2020-11-27 07:02
把你那两个有问题文件夹的打包上来看看。要知道,对于文件文件夹判断都是基于实际存在路径,如果是单纯的列 ...

这个批处理就是为了构建一个完整pe的空文件框架用于BC做文件夹比对,可能是我表达不好,应该如junyee所说把列表创建包含在这个批处理之中,并且用dir/s  /b  /ad 和/a-d,分别创建文件夹列表和文件列表来构建
回复

使用道具 举报

 楼主| 发表于 2020-11-27 15:39:37 | 显示全部楼层
窄口牛 发表于 2020-11-27 07:02
把你那两个有问题文件夹的打包上来看看。要知道,对于文件文件夹判断都是基于实际存在路径,如果是单纯的列 ...

这两个文件夹系统里应该都有的,您在c盘里看下
回复

使用道具 举报

 楼主| 发表于 2020-11-27 15:42:57 | 显示全部楼层
my9823 发表于 2020-11-27 08:50
我觉得第二个要求,你应该分几步进行:先dir/a:d/b/s分别产生两个目录的目录列表进行比较得到B目录中有但A目 ...

能帮忙写个吗?
回复

使用道具 举报

发表于 2020-11-27 17:42:33 来自手机 | 显示全部楼层
肯定是没有啊,有还要你传?

点评

完整的空文件  详情 回复 发表于 2020-11-27 18:48
回复

使用道具 举报

 楼主| 发表于 2020-11-27 18:48:15 | 显示全部楼层
窄口牛 发表于 2020-11-27 17:42
肯定是没有啊,有还要你传?

完整的空文件

CGI.7z

30.71 KB, 下载次数: 7, 下载积分: 无忧币 -2

回复

使用道具 举报

发表于 2020-11-27 19:07:21 来自手机 | 显示全部楼层
看到这个路径,在bug10系统盘看到了,win7和2208r2确实没有。通过测试,我这里这两个文件夹也能被复刻,可能你的列表有问题。

点评

先前文件对比没注意去看原文件,后来发现你这批处理会改写原文件日期,这个BUG有点大  详情 回复 发表于 2020-11-27 19:24
回复

使用道具 举报

 楼主| 发表于 2020-11-27 19:24:43 | 显示全部楼层
窄口牛 发表于 2020-11-27 19:07
看到这个路径,在bug10系统盘看到了,win7和2208r2确实没有。通过测试,我这里这两个文件夹也能被复刻,可 ...

先前文件对比没注意去看原文件,后来发现你这批处理会改写原文件日期,这个BUG有点大
回复

使用道具 举报

发表于 2020-11-27 22:25:34 来自手机 | 显示全部楼层
文件夹的访问日期吧,创建日期应该不会。
回复

使用道具 举报

发表于 2020-11-28 10:48:11 来自手机 | 显示全部楼层
单纯按列表处理,判断最后一列有没有点作为文件夹处理,难度好大。这样不去骚扰实际路径就行。

点评

二楼有junyee坛友写的批处理,在生成文件列表时分为目录和文件,这样就不会出错了,我觉得这个比较合理  详情 回复 发表于 2020-11-28 11:12
回复

使用道具 举报

 楼主| 发表于 2020-11-28 11:12:35 | 显示全部楼层
窄口牛 发表于 2020-11-28 10:48
单纯按列表处理,判断最后一列有没有点作为文件夹处理,难度好大。这样不去骚扰实际路径就行。

二楼有junyee坛友写的批处理,在生成文件列表时分为目录和文件,这样就不会出错了,我觉得这个比较合理
回复

使用道具 举报

发表于 2020-11-28 15:28:06 | 显示全部楼层
  1. @echo off
  2. Setlocal enabledelayedexpansion
  3. reg query HKU\S-1-5-20>nul || echo;CreateObject^("Shell.Application"^).ShellExecute "%~f0", "", "", "runas", 1 > "%temp%\getadmin.vbs" && cscript //b "%temp%\getadmin.vbs" && exit /b & del "%temp%\getadmin.vbs" /f /q>nul 2>nul
  4. pushd "%CD%"&& CD /D "%~dp0"
  5. FOR /f "delims=" %%i IN (ls.txt) DO (
  6. set a=%%~di
  7. set a=!a:~,1!
  8. for /f "delims=" %%a in ('echo "%%~nxi"^|find /v "."') do (
  9. md "%USERPROFILE%\desktop\目录结构\!a!%%~npxi")
  10. for /f "delims=" %%a in ('echo "%%~nxi"^|find "."') do (
  11. md "%USERPROFILE%\desktop\目录结构\!a!%%~pi"&cd.>"%USERPROFILE%\desktop\目录结构\!a!%%~npxi")
  12. )
  13. pause>nul
复制代码

点评

已试,现在ok了,谢谢!  详情 回复 发表于 2020-11-28 18:06
回复

使用道具 举报

 楼主| 发表于 2020-11-28 18:06:55 | 显示全部楼层

已试,现在ok了,谢谢!
回复

使用道具 举报

 楼主| 发表于 2020-11-29 17:28:30 | 显示全部楼层
换了个题目,请大家帮助一下

点评

原来的2什么来着?  详情 回复 发表于 2020-11-29 18:59
回复

使用道具 举报

发表于 2020-11-29 18:59:10 | 显示全部楼层
2013koko 发表于 2020-11-29 17:28
换了个题目,请大家帮助一下
原来的2迟迟不能解决

原来的2什么来着?

点评

dir一个pe的文件列表,处理install.wim,只保留最后一个映像,并删除pe文件之外的多余文件(可以先dir目录,先删wim里的多余目录,然后再删多余文件) 如果处理.wim不好处理,能够生成一个删除表也可以。 大侠能否出  详情 回复 发表于 2020-11-29 20:12
回复

使用道具 举报

 楼主| 发表于 2020-11-29 20:12:39 | 显示全部楼层
本帖最后由 2013koko 于 2020-11-29 20:15 编辑
nttwqz 发表于 2020-11-29 18:59
原来的2什么来着?

dir一个pe的文件列表,处理install.wim,只保留最后一个映像,并删除pe文件之外的多余文件(可以先dir目录,先删wim里的多余目录,然后再删多余文件)
如果处理.wim不好处理,能够生成一个删除文件列表也可以。
大侠能否出手帮助写一个,谢谢!

点评

这个可以用wimlib dir install.wim —path=2/windows/>卷2的windows列表.txt 后续生成和制作删除列表看我《五秒制做完成网络骨头版》那个帖子,几秒钟就能制作完成网络骨头版的win10pe!  详情 回复 发表于 2020-11-29 20:43
你这是要复刻出来一个PE?直接使用修改不就好了,何必这么麻烦,或者使用wimbuilder 2生成一个  详情 回复 发表于 2020-11-29 20:25
回复

使用道具 举报

发表于 2020-11-29 20:25:38 来自手机 | 显示全部楼层
2013koko 发表于 2020-11-29 20:12
dir一个pe的文件列表,处理install.wim,只保留最后一个映像,并删除pe文件之外的多余文件(可以先dir目录 ...

你这是要复刻出来一个PE?直接使用修改不就好了,何必这么麻烦,或者使用wimbuilder 2生成一个

点评

能有批处理当然更快捷,更换版本也更方便  详情 回复 发表于 2020-11-29 20:49
回复

使用道具 举报

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

本版积分规则

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

闽公网安备 35020302032614号

GMT+8, 2024-3-29 05:34

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

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