有幾份word文檔,分別有很多個名字,如何把出現過2次或以上的名字列舉出來?

有幾份word文檔,分別有很多個名字,如何查找出出現過2次或以上的名字,就是要把出現過2次或以上的名字列舉出來。最好一次性就可以列出來了。

(使用VBA的話,怎麼寫演算法開銷最小/速度最快?)


介紹一個使用Excel宏表函數,實現查找文件名的方法:

1.新建一個excel表格;

2. 組合鍵Ctrl+F3,召喚名稱管理器

點擊新建,創建一個files宏表函數

星號(*)前面是你的word文件存放的位置;

3.現在這個名為「doc」的函數就建好了,接下來就是通過隨便什麼方法(index,offset)把所需的文件名調出來就OK了,例如

=INDEX(doc,ROW())

然後往下拉……效果如下:

4. 所有文件名字都出來了,之後的篩選我相信樓主你行的!5.這個是測試文件夾內容


方法很多,我不知道你有什麼工具在手,不過既然你有word的話,相信也有Excel,我這裡介紹一個用Excel解決的辦法,雖然不算便捷,但是起碼比你重新學一個工具快。

第一步,把所有word的名字都列出來,如果你沒有使用專門的文件管理軟體,那麼最快的方式是用windows自帶的CMD。

按下win+r打開運行。win鍵就ctrl和alt中間那個有windows標誌的鍵。輸入「cmd」三個字母然後回車。會出來一個黑乎乎的窗口。

然後輸入如下命令:

dir /B "你存放word文檔的目錄*.doc" &> "你要放輸出列表文件的目錄out.txt"

例子:

dir /B "D:dropboxwork*.doc" &> C:UserszecyDesktopout.txt

「dir」命令是列出文件夾中的所有文件,後面的「/B」是只列出文件名。「*.doc」的意思是所有「doc」後綴的文件,如果你還有「docx」的,那麼多改成「doc*」即可。「&>」符號是把結果輸出的意思。後面的路徑隨你喜歡,文件名也可以隨意改。

然後你可以得到一個out.txt(或者其他名字)的文本文檔,打開發現裡面有你所有的word文檔的文件名。

既然你有重複文件名的word文檔,說明你的文檔是放在多個不同的文件夾的,重複上述操作,保存為不同的列表文件。

下一步,打開Excel,把所有文件名都複製到Excel裡面。然後你就有多種方法把重複的文件名篩選出來,參照這個頁面:4種方法來在Excel中查找重複條目


我對問題的理解是,每個文檔裡面有很多名字,求重複的名字。

前面的答覆都是關於重複文件名的

1.安裝個python

2.把幾個word文檔裡面的名字複製到一個in.txt文件(每行一個名字)

3.在當前目錄下面建一個run.py的文件,複製代碼,運行

all=[]
repeat=[]
for l in open("in.txt").readlines():
name = l.strip()
if name in all:
repeat.append(name)
continue
all.append(name)
print "
".join(repeat)
i=raw_input("
")

又想了想,是不是你還要看重複的名字是從哪個doc裡面來的呢,要看每個重複的名字出現在哪些文件裡面呢

1.安裝個python

2.分別把個word文檔裡面的名字複製到一個和他同名的txt文件(每行一個名字)

3.新建文件夾,文件夾名為in,剛才的txt文件扔進去

4.在文件夾in的同級目錄下新建文件run.py的文件,複製代碼,運行

#coding = utf-8
from os import listdir
from os.path import join,basename

all={}
files= [join("in",i) for i in listdir("in")]
for f in files:
for l in open(f).readlines():
# n:name,fn:filename
n = l.strip()
fn = basename(f)
if not all.get(n):
all[n]=[fn,]
continue
all[n].append(fn)
outputlines=[ "%s %s"%( n," ".join([ fn for fn in all[n] ]) )
for n in all if len(all[n]) &>1 ]
print "
".join(outputlines)
i=raw_input("
Press Enter to Exit")

如果你還說,要輸出到某個文件,不喜歡看黑黑的命令行

那就把print "
".join(outputlines)

改成open("output.txt","w").write("
".join(outputlines))

是不是這還不是最簡潔的寫法啊

每次我以為自己已經寫的很簡潔的時候,再看看別人的,會大吃一驚。

回頭看了一下題目的tag,我感覺我來錯了地方


找個bash,就是前兩天剛出安全問題那個LoL

打開文本文件,把所有文件名保存進去。比如說像這樣

filename.txt

1.doc
2.doc
1.doc
123.doc

然後執行這個

$ cat filename.txt | sort | uniq -c

2 1.doc
1 123.doc
1 2.doc

輸出第一列是次數,第二列是名字

以上


推薦閱讀:

為何word宋體五號和小四差距很大?
幾個人用word修訂一個文檔的不同章節,如何保留修訂標記將文件合併在一起?
用 Microsoft Word 寫書排版有哪些技巧?
怎樣在word或者PDF裡面的小正方形里打鉤(圖一)?如何實現在某一個詞上劃橫線(圖二)?
帶有公式的visio 插入到word變 模糊而且拉伸了,怎麼辦?

TAG:MicrosoftWord | Word文檔處理 | Word2010 |