{title}

Hallo, ich suche nach einem Code, um zu zählen, wie oft ein bestimmtes Wort in Dokumenten mit mehreren Wörtern verwendet wurde, und um die Abbildung in einer Textdatei zurückzugeben. Durchsuchen Sie mehrere MS-Word-Dokumente, zählen Sie das Wort "apple" und geben Sie die Abbildung zurück Ist dies möglich, ohne jedes Dokument einzeln öffnen zu müssen?

So viele kluge und hilfsbereite Leute bei Computer Hope.

Vielen Dank, Bill Rich, aber nicht sicher, wie der Code eingegeben werden soll. Kannst du ihn so posten, wie er eingegeben werden soll, damit ich ihn kopieren und einfügen kann?

petreli, fragen Sie die Computer Hope Crew mit 2 und 3 Tausend Beiträgen. Sie sind die Experten. Viel Glück. Lachsforelle ist neu, aber er weiß mehr als jeder andere. Muss aus Kanada sein?

Ich kenne VBS nicht. Fragen Sie Ghost.

@OP, zuallererst verwendet bill grep und wc, die ursprünglich nix tools sind. Es gibt Windows-Ports für diese Tools. Wenn Sie sie also nicht heruntergeladen haben, können Sie sie nicht wie bill verwenden. Zweitens sind MS Words Doc Binärdateien. Daher können Sie vergessen, die Stapelrechnung zu verwenden, die geschrieben wurde. es funktioniert nicht so. Was Sie tun müssen, lernen Sie vbscript (oder Powershell). Sehen Hier In der Unix-Welt verwende ich den Antiword-Code: # antiword test.doc | awk '/ {für (i = 1; ihere. Ich habe es nicht ausprobiert, also überlasse ich es Ihnen zu erkunden

Lesen Sie die Beiträge von Ghost. Er hat die Lösung.

Es gibt keine Garantie, dass diese Methode die genaue Anzahl der Wörter findet. Die Verwendung von find/c bedeutet, dass find nur die Zeilen zählt, die das Wort enthalten. Es würde nicht genau zählen, wenn sich mehrere gleiche Wörter in einer Zeile befinden.

Ich lag falsch; Es tut mir leid, dass ich Ihre Zeit in Anspruch genommen habe.

zeigen, warum es das nächste Mal nicht funktioniert. Fehlermeldungen, Ihr Code usw. Eine abgespeckte Version Code: Set objWord = CreateObject ("Word.Application") strDocPathstrSearchSet objDoc = objWord.Documents.Open (strDocPath) With objDoc.Content.Find .Text = strSearch .Format = False .Wrap = wdFindStop Do While.Execute iStrCount = iStrCount + 1 LoopEnd WithIf iStrCount = 1 ThenWScript.Echo strSearch & "erscheint einmal in" & vbCrLf & strDocPathElseWScript.Echo strSearch & "erscheint" & iStrCount & "mal in" & vbCrDocStrCrCrCount & " (wdDoNotSaveChanges) objWord.QuitSet objWord = NothingSet fso = NothingoutputCode: C: test> cscript/nologo test.vbsword wird viermal in c: test test.doc angezeigt

countwords.vbsCode: 'Wortanzahl VBS.Dim X, Y, countOf, StrWord, docfile Setze X = CreateObject ("Word.Application") docfile = "filename.doc" für jedes y in x.Documents.Add (docfile). Wörter strword = Trim (Replace (y.Text, vbCrLf, "")) If StrComp (strword, "and", 1) = 0 Then countof = countof + 1 End If Next x.Quit Set x = Nothing WScript.echo countof Im Moment wird nur eine Datei durchsucht. wie es in gewisser Weise mit einer Batch-Datei verwendet werden könnte. EDIT: verdammt, bis zum Anschlag geschlagen. Na ja, meins verwendet eine andere Methode. (Ich denke, es ist zwar langsamer)

Hier ist eine Vollversion, die rekursiv aus dem aktuellen Verzeichnis sucht. Keine notwendigkeit charge. Code: Setze objFS = CreateObject ("Scripting.FileSystemObject") strFolder = "c: test" Setze objFolder = objFS.GetFolder (strFolder) Go (objFolder) Sub Go (objDIR) If objDIR <> " System Volume Information" Then Für jeden Ordner in objDIR.SubFolders eFolder NextFor Each strFile In objDIR.FilesIf objFS.GetExtensionName (strFile) ThenSet x = CreateObject ("Word.Application") docfile = strFile.Pathcountof = 0 Für jeden y In x.Documents.Add docfile) .Words strword = Trim (Ersetzen (y.Text, vbCrLf, "")) If StrComp (strword, "Word", 1) = 0 Then countof = countof + 1 End If Next x.Quit Set x = Nothing WScript .echo countof, docfileEnd If Next End If End Sub

VBS ersetzt alle Chargen. Schade, dass ich nicht hell genug bin, um es zu benutzen. So großartige Lösungen. VBS wird auch "C", "C ++" und die gesamte Unix- und Shell-Programmierung ersetzen. Die Computer Hope Crew ist führend.

Großartige Arbeit von der Computer Hope Crew.

Der Fehler ist ziemlich offensichtlich. Sie haben eine beschädigte Word-Datei. Verwenden Sie den Anhang, den ich gegeben habe, ist nicht so trivial. Erstellen Sie ein neues Word-Dokument. Geben Sie einen Beispieltext mit den Wörtern ein, nach denen Sie suchen möchten. Als Word-Dokumentdatei speichern. Führen Sie das Skript aus, und wenn die Anzahl korrekt ist, bedeutet dies, dass es funktioniert. Mein Ausgabecode: C: test> cscript/nologo test.vbs0 C: test test test2.doc5 C: test test.doc0 C: test test1.doc

Um es zusammenzufassen. Sie sind kein Programmierer. Das ist an und für sich kein Problem - ich bin auch kein Programmierer von Beruf -, aber ich habe tatsächlich "echte" Programmierbücher gelesen, einschließlich der Sprachreferenz für eine Reihe von Programmiersprachen sowie der entsprechenden Programmierhandbücher und ich bin sicher, ghostdog hat auch ein paar gelesen. Ganz zu schweigen von Code Complete (verdammt gutes Buch). Ich habe einen vollständigen Ersatz für die gleichen FileSystemObjects geschrieben, die wir hier verwenden, der viel zu viele Funktionen hinzufügt, um zu zählen. Soll ich den Code dafür präsentieren, damit Sie darauf hinweisen können, ob ich CloseHandle () irgendwo aufrufen soll, wo ich es vergessen habe? Oder werden Sie tatsächlich verstehen, dass die klassenbasierte Implementierung CloseHandle () im Terminate-Ereignis aufruft. Oder genauer, verstehen Sie Ereignisse? Wahrscheinlich nicht, aber weißt du was? Das ist in Ordnung - Your Learning VBScript. Das ist gut. Es ist gut, Fragen zu Code zu stellen. Aber zu deklarieren, dass das Programm nicht funktioniert, wenn die Fehlermeldung ganz einfach ist, ist einfach nur albern. War es eine Textdatei? komm schon, gib es zu. Es war eine Textdatei, die Sie in doc umbenannt haben. Es ist in Ordnung. Haben Sie etwas Kuchen. Nicht alles, ich möchte etwas. Ich habe es satt, dass Sie sich pedantisch gegen andere VBScript- oder Batch-Benutzer wehren und behaupten, dass "es nicht funktioniert", weil Sie die Befehlszeilensyntax nicht herausfinden können oder weil Sie das entscheiden Ungeachtet des vom OP definierten Eingabeformats werden Sie Shenanigans aufrufen, weil der Stapel oder das VBS-Skript beim Einfügen von Zeichen unterbrochen wird oder weil der Code in Ihren Augen nicht "vorausschauend" ist oder weil ein anderer vergeblicher Versuch unternommen wird, ein falsches Argument zu verwenden du kannst aufbringen, und wenn dir keiner einfällt, machst du dir einfach eine Art Analogie mit Nutztieren. Ich könnte auch hinzufügen, dass die Skripte, die ich hier erstelle, einfach so schnell wie möglich erstellt werden. Aber ich teste es immer. Wenn Sie nicht die Unannehmlichkeiten einer "Musterausgabe" veröffentlichen, ist dies eine zensierte Schande.

An alle: Gute Arbeit.

Du hast keine Ahnung wovon du sprichst und deshalb empfehle ich dir STFU. Nein, ist es nicht. Für ein Word-Dokument, das ich getestet habe, war die Ausgabe 4. War das irgendwie ein Beweis dafür, dass es funktioniert? Menschen, die versuchen, die angegebenen Skripte zu bearbeiten und sich dann beschweren, wenn das EDITED-Skript nicht funktioniert, und wenn es funktioniert, beschweren sie sich auf umständliche Weise über die Ausgabe. Das ist eine rote Fahne, von der sie keine Ahnung haben, wovon sie sprechen. Je mehr ich darüber nachdenke, desto mehr denke ich, dass Sie vielleicht von spectateswamp gelernt haben.

BC_P, nachdem ich mit Billrich selbst die Schwerter gekreuzt habe, kann ich nur mit Sympathie vorschlagen, dass Sie das tun, was ich tue, was im Grunde genommen den Mist ignoriert. Ich werde nicht länger versuchen, seinen "Code" zu korrigieren. Wenn seine halbgebackenen Ausgüsse alles sind, was das Originalplakat am Ende sieht, nun, leider, so sei es. Das Leben ist zu kurz. "BC Hat" in der Tat! Ist das in der Nähe von Medicine Hat? (Nein, ich habe es überprüft, es ist in AB)

Weiter so Computer Hope Crew.

Ghostdogs Script zählt ein bestimmtes Wort in Dokumenten mit mehreren Wörtern. Aus irgendeinem Grund glaube ich, dass dies geeignet ist.

Gut gemacht; Große Hilfe von allen.

Nachteil Ändern von Registrierungseinträgen über einen Befehl Sofort

Hallo, ich habe versucht, die Bearbeitung von Registrierungseinträgen über eine Eingabeaufforderung zu knacken. Das Problem, das ich habe, ist, dass der Schlüssel Leerzeichen im Namen hat, z. B. die Taste "Recent File List" in Wordpad. Wenn ich versuche, den Befehl "Registrierungsabfrage HKCU Software Microsoft Windows CurrentVersion Applets Wordpad/s" zu verwenden, erhalte ich eine Liste der Unterschlüssel und Werte, die den Unterschlüssel "Recent File List" enthält. Wenn ich dann den Unterschlüsselnamen am Ende des Befehls hinzufüge, um nur den Wert für diesen Unterschlüssel abzurufen, wird "Fehler: Ungültige Befehlszeilenparameter" angezeigt. Ich habe versucht,/zwischen den Wörtern zu verwenden, so dass es so aussieht wie "Recent// File// List" und auch den Unterschlüsselnamen in "" keiner davon einschließt. Irgendjemand kann mir helfen ??? TIA

Es sollte ungefähr so ​​aussehen: reg query "HKCU Software Microsoft Windows AktuelleVersion Applets Wordpad"/v "Liste der zuletzt verwendeten Dateien" Wenn Sie einen Wert hinzufügen möchten, verwenden Sie reg add

Versuchte es und es kommt zurück mit "Fehler: Das System konnte den angegebenen Registrierungsschlüssel oder Wert nicht finden"

Das sollte funktionieren:
Code:
Reg-Abfrage "HKCU Software Microsoft Windows AktuelleVersion Applets Wordpadecent-Dateiliste"/s Haben Sie versucht reg/query /? .

Das hat funktioniert! Ich kann es jetzt in meine Winbatch-Programme einbinden !! ( www.windowware.com ) Danke Sidewinder und denen, die versucht haben zu helfen.

Ups !, falscher Link für Interessierte. Dies ist der Link zu Winbatch: - " www.winbatch.com msgstr "" "Es ist wie Dos Batch - Programmierung nur für Windows.

Beliebte Beiträge