中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-16 18:40
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 如何根据TAR文件的状态把文件分类? 查看 2,036 回复 22
楼 主 如何根据TAR文件的状态把文件分类? 发表于 2007-06-13 22:23 ·  中国 广东 广州 黄埔区 电信
初级用户
★★
积分 132
发帖 62
注册 2007-06-05 23:27
UID 90371
性别 男
状态 离线
各位高手:
请帮我写一个能实现下列功能批处理。

1. 假设在 C:\log 文件夹有许多 .TAR 文件(已压缩的文件),而且每个.TAR文件只有一种状态,要么是 TP要么是 TF (你可从 .TAR 文件看出来)

2. 要把带有TP或TF的 .TAR文件区别开来,例如:把带有TF的 .TAR文件移到 C:\log\TF\文件夹里,

3.由于无法附上.TAR原文件,只有附上.TAR文件的内容在此给各位参照
************************************************************
SBS7152297IB
CWHP
BWHP UI
Nhuawhpfct11
PFVT
s0
D2217.scr
R???
nW10110641
rREL
OC900260
L29
p11
W???

06/01/07 20:13:36
TF
FWRCVP_Disable Heartbeat
>WIDE_RECEIVE_PACKET (Disable Heartbeat Broadcast packet)
>RcvPacket() returned an error
>Timeout getting packet byte
MWide_FW_Version
d0x11
************************************************************

[ Last edited by bjsh on 2007-7-31 at 02:28 PM ]
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
lxmxn -2 2007-06-16 21:47
2 发表于 2007-06-13 22:39 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
UID 75624
性别 男
状态 离线
楼主的意思是说,只要TAR文件中包含TF的就放入TF文件夹,TP的就放入TP文件夹?
3 发表于 2007-06-13 22:46 ·  中国 广东 广州 黄埔区 电信
初级用户
★★
积分 132
发帖 62
注册 2007-06-05 23:27
UID 90371
性别 男
状态 离线
是的,能做的到吗,谢谢您的及时回复
4 发表于 2007-06-13 23:13 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
UID 75624
性别 男
状态 离线
对TAR文件一点不熟悉。只知道是Linux下的压缩文件。

楼主的文件内容是如何提取出来的?

是文件名称,还是只是文本内容?
5 发表于 2007-06-13 23:26 ·  中国 广东 广州 黄埔区 电信
初级用户
★★
积分 132
发帖 62
注册 2007-06-05 23:27
UID 90371
性别 男
状态 离线
先指着.TAR文件后右击鼠标选记事本打开的,外表看是一个压缩文件,其实内容是文本内容
6 发表于 2007-06-14 00:34 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
UID 75624
性别 男
状态 离线
这个可以参考一下。
@echo off&setlocal enabledelayedexpansion
if not exist TF md TF
if not exist TP md TP
for /f %%i in ('dir /b *.txt') do (
find /c "TF" %%i
if !errorlevel!==0 copy %%i TF\%%i&del /q /f %%i
)
copy *.txt TP\*.txt
del /q /f *.txt


偶假设当前文件夹下有许多文本文件,其中也只包含TF或TP字符。
7 发表于 2007-06-14 15:05 ·  中国 广东 广州 白云区 电信
初级用户
★★
积分 132
发帖 62
注册 2007-06-05 23:27
UID 90371
性别 男
状态 离线
先谢谢高手,基本功能可以实现但还不能100%精确的把含有TP 或 TF 字符的.TAR文件区别开来,例如: 暂时发现下列两个文件名.TAR 文件,其内容是含有TP 的字符,但还是放在 TF的文件夹理,能否帮我再研究研究看,先谢了.

RE0724000R5CA(6-13-2007 16-3-38).TAR --->是文件名

KM107230000JLA(6-9-2007 12-41-29).TAR--->是文件名
8 发表于 2007-06-14 15:18 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
UID 75624
性别 男
状态 离线
失误,忘问楼主的文件名是否含空格了。呵呵
类似的
@echo off&setlocal enabledelayedexpansion
if not exist TF md TF
if not exist TP md TP
for /f "delims=" %%i in ('dir /b *.txt') do (
find /c "TF" "%%i"
if !errorlevel!==0 copy "%%i" TF\"%%i"&del /q /f "%%i"
)
copy *.txt TP\*.txt
del /q /f *.txt

没测试,先看看吧。
9 发表于 2007-06-14 20:56 ·  中国 广东 广州 白云区 电信
初级用户
★★
积分 132
发帖 62
注册 2007-06-05 23:27
UID 90371
性别 男
状态 离线
文件名跟其它文件名一样的,(这文件名是系统自动产生的), 也试了你刚刚给我最新的但还是不行,能否方便给我你的 email address, 我把相关.TAR 文件发给你帮我看看因为我不知道怎样把那些文件附在这里.先谢拉!
10 发表于 2007-06-15 00:06 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
UID 75624
性别 男
状态 离线
点引用回复,就可以添加附件了。
@echo off&setlocal enabledelayedexpansion
if not exist TF md TF
if not exist TP md TP
for /f "delims=" %%i in ('dir /b *.txt') do (
findstr /b /r "\<TF\>" "%%i"
if !errorlevel!==0 copy "%%i" TF\"%%i"&del /q /f "%%i"
)
copy *.txt TP\*.txt
del /q /f *.txt


[ Last edited by wudixin96 on 2007-6-15 at 10:56 AM ]
11 发表于 2007-06-15 14:53 ·  中国 广东 广州 白云区 电信
初级用户
★★
积分 132
发帖 62
注册 2007-06-05 23:27
UID 90371
性别 男
状态 离线
我测试了一下,暂时没有发现问题,还是高手厉害啊,我真的太笨拉,高手,现还有一问题请教,正常的批处理运行时,会在屏幕前闪一下黑色的窗口,能否有办法让批处理在后台运行,不要会在屏幕前闪一下黑色的窗口, 请赐教
12 发表于 2007-06-15 15:03 ·  中国 浙江 衢州 中移铁通
银牌会员
★★★
积分 1,928
发帖 931
注册 2007-01-06 11:46
UID 75624
性别 男
状态 离线
兄台过奖了,其实偶也一菜鸟。刚入门而已。

要隐藏运行批处理,请使用论坛的“搜索”功能。
13 发表于 2007-06-15 16:34 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 302
发帖 138
注册 2007-03-29 02:33
UID 83224
性别 男
状态 离线
set batname=WScript.CreateObject("WScript.Shell")
batname.run "batpath",0

保存为vbs脚本运行即可

[ Last edited by lililulula on 2007-6-15 at 04:35 PM ]
14 发表于 2007-06-15 16:50 ·  中国 广东 广州 白云区 电信
初级用户
★★
积分 132
发帖 62
注册 2007-06-05 23:27
UID 90371
性别 男
状态 离线
13 楼的意思我还不明白,能否详细说明一下, 我的意思是我用Windows--->Control panel-->Scheduled Task 来排一时间定期运行这一批处理,当运行时,能否有办法让批处理采用"隐藏的方式或其它的方式运行", 总之不要让人看到有黑色屏幕闪烁就行啊,
15 发表于 2007-06-15 17:09 ·  中国 上海 浦东新区 电信
中级用户
★★
积分 302
发帖 138
注册 2007-03-29 02:33
UID 83224
性别 男
状态 离线
你将上段代码保存成vbs文件,代码里面的batpath为你bat文件的绝对路径,然后计划任务中运行这个vbs脚本
论坛跳转: