|
inspiron1501 发表于 2013-7-22 17:37 8 p3 M4 j0 q' r: b U
貌似没有什么好办法,我原来想写一个批处理文件,自动copy用得着的后缀的文件.ssm,.pad,.dra,.psm,.txt等, ...
7 d- R% T$ n3 T& x) @8 v Z很久没有编写bat脚本,晚上逛百度的时候看到有一个朋友需要一个提取文件夹中文件的功能,尝试着写了一个,花费了不少时间,很多的语法都忘记得差不多了。。。$ F( x* s( ^7 ?. `$ g' X
2 [2 o7 B1 U6 v
以下是功能代码:9 A7 b$ q9 _1 z/ a' d' w% V! K2 ^7 Z
4 i7 Z% n8 h+ g( w2 \
@echo off
( |/ Q' u/ b; u9 ?& P+ Zmode con cols=70 lines=5
( G* V( G' c3 l0 W8 H! s* acolor a
! N! R1 y% d' Ytitle -= by 无为 =-& M7 {5 b7 c5 T |
9 g; [6 g) M: S, A" [& G
cls' v7 N; {, ?" O
SetLocal EnableDelayedExpansion
: i: k& |! A4 T* u I' f7 l
7 Z& O) j- D+ f% K \, Fset _Path=%cd%
1 j- |5 F- P I# r
; _1 D0 P* [* L s, Q4 B) p. Yif exist %tmp%\tmpfile.tmp1 del %tmp%\tmpfile.tmp1
; k* F% {( p& {* T& R x7 Z! Sif exist %tmp%\tmpfile.tmp2 del %tmp%\tmpfile.tmp2, `; a; @5 F9 Q- g
if exist %tmp%\tmpFilePath rd /s/q %tmp%\tmpFilePath
# x1 F% Z @9 P- J9 d, _! l& ^% `
5 N3 Q, q* l" T( X( Zdir * /A-D /w /s /b >>%tmp%\tmpfile.tmp1
7 V0 W5 S* [7 b. ~dir * /AD /b >>%tmp%\tmpfile.tmp2
8 X! I5 p a I! c( v# m/ Q& M
9 w5 F' }8 Q9 h2 Y* H. p1 Fmd %tmp%\tmpFilePath, c! [7 B+ D& E# s
8 J3 d" s1 X x' U, M: eFOR /F "eol=; tokens=1,2 delims=." %%i in (%tmp%\tmpfile.tmp1) do (2 U" e! h+ X. C, K3 X% }- D8 W; D
if "%%i.%%j" neq %0 (
6 h: D+ N' V$ z5 Z2 s# _0 Hif exist %tmp%\tmpFilePath\%%~ni.%%j (
$ i0 ?* P4 G* f3 kset num=!random!0 b. [ c7 d7 @
ren "%%i.%%j" "%%~ni_!num!.%%j". }3 y& I. z7 I
move /Y %%i_!num!.%%j %tmp%\tmpFilePath
1 `# A) \% h: n4 e1 S) C) else (
+ ]& W+ G. z* ]move /Y %%i.%%j %tmp%\tmpFilePath
( N; o2 H6 Q: f)2 Z% F6 @; l# I; D( T
); `7 H" [" j" A$ U
)
# ~/ x4 {+ g$ x2 S* |. Y3 M; @. G7 a8 q. k" T/ Z! O
del %tmp%\tmpfile.tmp1; E8 U A: A Y6 Z2 e
dir * /A-D /w /s /b >>%tmp%\tmpfile.tmp1- [# K% p+ ] c" _$ B; _1 U: k
( R3 j- a5 M) Y0 T. a, E" G* _
cls&&echo.&&echo.
. P: D* N# k5 ?" n: @echo 正在移动文件,请勿关闭本窗口!移动完成将自动关闭!~~7 i0 Y7 P2 M3 k q' _% f2 m
title 正在移动文件,请勿关闭本窗口!移动完成将自动关闭!~~
6 n+ Z9 E# A3 V. g
) f4 Y* W5 C9 D5 `
7 E) k+ a( \: b: n5 r>nul (FOR /F "eol=; tokens=* delims=" %%i in (%tmp%\tmpfile.tmp2) do rd %%i /s/q 0 Q+ O' w7 m) a+ ~* q
move %tmp%\tmpFilePath\* %_Path%
- b: z+ N6 r0 ^0 b: o) s$ [, R$ G8 zFOR /F "eol=; tokens=* delims=" %%i in (%tmp%\tmpfile.tmp1) do move /Y %%i %_Path% 4 L+ o8 \7 \) P) Q2 X' u
rd /s/q %tmp%\tmpFilePath)+ c$ n+ y5 l& z$ x3 K9 D# g
0 O( d8 }" V5 U: {
cls&&echo.&&echo./ U( H* g! Z+ t* T5 X! e, _$ v
echo 移动完成,窗口即将关闭!
" N( W4 m$ ]" ]' n9 v# Ttitle移动完成,窗口即将关闭!$ K: [# S$ k. R
$ P6 M+ u* ^* l2 q9 m6 B8 `ping 127.0.0.1 >nul
( A' C0 B6 ?6 F$ v* r0 S" `& ?* Y, Y0 E" |
$ m7 [+ ]8 _ _# \+ `
有时整理电脑文件时,需要将一个文件夹中所有子目录里的文件全部移动到这个文件夹的根目录中来,并把下面所有的子目录删除掉,只保留文件,如果剪切粘贴的话太麻烦,利用上面的代码,就可以双击运行一下脚本来轻松搞定。
/ E! S* {7 v. w: O4 j6 [" C8 z4 Z7 s7 n
使用方法:0 z( r9 E$ A3 C
/ ~2 l! i7 |) D+ _
1,复制以上代码,然后新建一个记事本文件,将代码粘贴进去,点击“文件”---“另存为”,文件名随便写,但最后一定要加“.bat”(不包括引号哈),保存类型选择“所有文件”(这个很重要,一定要选对)。
( D2 t2 h: V& {4 |( r" f, [* s7 x. Z
2,把保存好的这个bat文件放到你需要整理的文件夹根目录,然后双击运行就可以了。
% c$ s: I% G% Y2 ]1 z5 A z% `
如果文件比较大的话,执行代码可能需要一段时间,请不要关闭弹出的窗口,等文件移动完成之后,窗口会自动关闭。! \* G) g1 X' ^. ?8 u
% f% m# M! y0 V% x# U m
功能说明:
% h" K1 ^% y- s! u& e; ]5 A( m, y$ H) n: [& I" ^
比如你有一个文件夹test,这个文件夹下有很多子文件夹,每个子文件夹下面又分别有很多子文件夹,子文件夹下还有更多子文件夹,每一层的子文件夹下同时也有数量不同的文件。这个批处理可以实现的功能是把test这个文件夹下所有子文件夹下的文件全部移到test这个文件夹的第一层下,然后把下面的子文件夹删除掉(子文件夹里的文件都移上来了,文件夹都是空的)。7 T% t: s3 W: _
% W: |. u0 B; q& t" }- r1 U* A0 O
另注: 鉴于这个程序的功能,请不要随便在根目录下尝试,尤其是c盘,后果很严重哈。。。 |
|