xuexiang 发表于 2018-5-24 14:22:34

求复制txt记事本里的文件列表3个和2个一排逗号分隔【已解决】

本帖最后由 xuexiang 于 2018-5-25 09:46 编辑

有啥办法吗   
例如
1.exe                     6824 ntdll.dll, KERNEL32.DLL, KERNELBASE.dll,   
                                 apphelp.dll, USER32.dll, win32u.dll,      
                                 GDI32.dll, gdi32full.dll, msvcp_win.dll,   
                                 ucrtbase.dll, VERSION.dll, SHELL32.dll,   
                                 msvcrt.dll, cfgmgr32.dll, shcore.dll,      
                                 RPCRT4.dll, combase.dll,                  
                                 bcryptPrimitives.dll, windows.storage.dll,
                                 advapi32.dll, sechost.dll, shlwapi.dll,   
                                 kernel.appcore.dll, profapi.dll,            
                                 powrprof.dll, FLTLIB.DLL, ole32.dll,      
                                 OLEAUT32.dll, IMM32.dll, COMCTL32.dll,      
                                 MSIMG32.dll, UxTheme.dll, gdiplus.dll,      
                                 OLEACC.dll, WINMM.dll, WIMGAPI.DLL,         
                                 WINSPOOL.DRV, WINMMBASE.dll, oledlg.dll,   
                                 bcrypt.dll, PROPSYS.dll, IPHLPAPI.DLL,      
                                 CRYPTBASE.DLL, clbcatq.dll, msxml3.dll,   
                                 WININET.dll, iertutil.dll, urlmon.dll,      
                                 dwmapi.dll, MSCTF.dll, ieframe.dll,         
                                 NETAPI32.dll, WKSCLI.DLL, NETUTILS.DLL,   
                                 comctl32.dll, dataexchange.dll, d3d11.dll,
                                 dcomp.dll, dxgi.dll, twinapi.appcore.dll,   
                                 RMCLIENT.dll, TextInputFramework.dll,      
                                 CoreUIComponents.dll, ntmarta.dll,         
                                 CoreMessaging.dll, wintypes.dll,            
                                 WindowsCodecs.dll, sxs.dll, msIso.dll,      
                                 SspiCli.dll, mshtml.dll, srpapi.dll,      
                                 CRYPT32.dll, MSASN1.dll, mlang.dll,         
                                 WLDP.DLL, WINTRUST.dll, ieapfltr.dll,      
                                 CRYPTSP.dll                                 

用命令tasklist /m 分析了exe程序运行所需的文件,出来的列表是3个或者2个一行
或者有没有什么命令可以查看所需文件并复制出来

holley2008 发表于 2018-5-24 20:27:45

@echo off
for /f "delims=," %%a in (1.txt) do (
    for /f "delims=" %%i in ('dir /a-d /s /b "C:\Windows\%%a"^|^|echo;%%a^>^>2.txt') do copy /y "%%~fi" G:\00结果\
)
其中
“C:\Windows”为系统目录
“1.txt”为1.exe列出的文件列表
“2.txt”为系统目录未找到的文件列表
“G:\00结果\ ”为存放文件目录

dos时代菜鸟 发表于 2018-5-25 08:31:15

本帖最后由 dos时代菜鸟 于 2018-5-25 09:21 编辑

tasklist /m /fo list /fi "imagename eq explorer.exe"

lxwaft 发表于 2018-5-24 15:11:07

本帖最后由 lxwaft 于 2018-5-24 15:16 编辑

把逗号替换成制表符,然后可以粘贴到excel里,对应列就分开了

没看清楼主的问题,我的回答应该不对

dos时代菜鸟 发表于 2018-5-25 08:25:38

用 两个 for 就可以,

xuexiang 发表于 2018-5-25 08:53:40

本帖最后由 xuexiang 于 2018-5-25 09:53 编辑

holley2008 发表于 2018-5-24 20:27
其中
“C:\Windows”为系统目录
“1.txt”为1.exe列出的文件列表


我试了一下,列出来未找到的文件列表了,可是找到的却没有复制到指定目录
原来是少了个【\】 瞧我这粗心

dos时代菜鸟 发表于 2018-5-25 09:19:54

本帖最后由 dos时代菜鸟 于 2018-5-25 09:21 编辑

xuexiang 发表于 2018-5-25 08:53
我试了一下,列出来未找到的文件列表了,可是找到的却没有复制到指定目录

用这个

tasklist /m /fo list /fi "imagename eq 1.exe"

直接列出

你用 tasklist /?就知道了。

xuexiang 发表于 2018-5-25 09:34:47

dos时代菜鸟 发表于 2018-5-25 09:19
用这个

tasklist /m /fo list /fi "imagename eq 1.exe"


我是菜鸟,在网上找的tasklist /m
没想到还可以这样tasklist /m /fo list /fi "imagename eq 1.exe这个太好用了

dos时代菜鸟 发表于 2018-5-25 09:35:18

考虑到 可能有运行多个 1.exe 所以用如下代码,另外考虑 文件名可能带逗号 或者空格,所以用/fo list

@echo off
set "name=1.exe"
for /f "tokens=2 delims=," %%c in ('tasklist /nh /fo csv /fi "imagename eq %name%"') do (
FOR /f "skip=3 tokens=1,2 delims=:" %%h in ('tasklist /M /fo list /fi "PID EQ %%~c"') do (
    if not "%%i"=="" ( echo %%i) else ( echo %%h)
)
pause
)

xuexiang 发表于 2018-5-25 09:35:43

holley2008 发表于 2018-5-24 20:27
其中
“C:\Windows”为系统目录
“1.txt”为1.exe列出的文件列表


在winre下文件拷贝成功却没有列出未找到的文件列表

xuexiang 发表于 2018-5-25 09:38:21

holley2008 发表于 2018-5-24 20:27
其中
“C:\Windows”为系统目录
“1.txt”为1.exe列出的文件列表


貌似找到问题了,只找到29个文件,总共29行只找了每行第一个文件
有了dos时代菜鸟给的方法再加上你的方法,二合一就可以了

xuexiang 发表于 2018-5-25 09:43:42

本帖最后由 xuexiang 于 2018-5-25 09:46 编辑

dos时代菜鸟 发表于 2018-5-25 09:35
考虑到 可能有运行多个 1.exe 所以用如下代码,另外考虑 文件名可能带逗号 或者空格,所以用/fo list
...

主要是要复制出指定程序所用到的dll文件,不用考虑1.exe
非常好,谢谢各位高手

dos时代菜鸟 发表于 2018-5-25 09:52:23

holley2008 发表于 2018-5-24 20:27
其中
“C:\Windows”为系统目录
“1.txt”为1.exe列出的文件列表


我考虑的是 tasklist 这个命令本身功能就不完备,
1、列表出的这些文件 路径不知道
2、如果文件名带空格或者逗号 怎么办
页: [1]
查看完整版本: 求复制txt记事本里的文件列表3个和2个一排逗号分隔【已解决】