求复制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个一行
或者有没有什么命令可以查看所需文件并复制出来 @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 09:21 编辑
tasklist /m /fo list /fi "imagename eq explorer.exe" 本帖最后由 lxwaft 于 2018-5-24 15:16 编辑
把逗号替换成制表符,然后可以粘贴到excel里,对应列就分开了
没看清楼主的问题,我的回答应该不对 用 两个 for 就可以, 本帖最后由 xuexiang 于 2018-5-25 09:53 编辑
holley2008 发表于 2018-5-24 20:27
其中
“C:\Windows”为系统目录
“1.txt”为1.exe列出的文件列表
我试了一下,列出来未找到的文件列表了,可是找到的却没有复制到指定目录
原来是少了个【\】 瞧我这粗心 本帖最后由 dos时代菜鸟 于 2018-5-25 09:21 编辑
xuexiang 发表于 2018-5-25 08:53
我试了一下,列出来未找到的文件列表了,可是找到的却没有复制到指定目录
用这个
tasklist /m /fo list /fi "imagename eq 1.exe"
直接列出
你用 tasklist /?就知道了。 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这个太好用了 考虑到 可能有运行多个 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
) holley2008 发表于 2018-5-24 20:27
其中
“C:\Windows”为系统目录
“1.txt”为1.exe列出的文件列表
在winre下文件拷贝成功却没有列出未找到的文件列表 holley2008 发表于 2018-5-24 20:27
其中
“C:\Windows”为系统目录
“1.txt”为1.exe列出的文件列表
貌似找到问题了,只找到29个文件,总共29行只找了每行第一个文件
有了dos时代菜鸟给的方法再加上你的方法,二合一就可以了
本帖最后由 xuexiang 于 2018-5-25 09:46 编辑
dos时代菜鸟 发表于 2018-5-25 09:35
考虑到 可能有运行多个 1.exe 所以用如下代码,另外考虑 文件名可能带逗号 或者空格,所以用/fo list
...
主要是要复制出指定程序所用到的dll文件,不用考虑1.exe
非常好,谢谢各位高手 holley2008 发表于 2018-5-24 20:27
其中
“C:\Windows”为系统目录
“1.txt”为1.exe列出的文件列表
我考虑的是 tasklist 这个命令本身功能就不完备,
1、列表出的这些文件 路径不知道
2、如果文件名带空格或者逗号 怎么办
页:
[1]