2017-07-20 1 views
2

Ich versuche, einen Befehl auf der alphabetisch erste Datei in einem Satz von Unterverzeichnissen ausführenAktion ausführen auf erste Datei in jedem Unterverzeichnis

for /R "parentfolder" %%a in (*.doc) do "%winword%" /mRTF "%%a" 

in einer Batch-Datei. Der eigentliche Befehl und das Makro funktionieren gut, aber es führt die Aktion für jede Datei in den Verzeichnissen aus, statt nur die gewünschten.

Gibt es eine Möglichkeit, die Flags -on in diesem Kontext zu setzen?

Jede Hilfe wird sehr geschätzt.


Vielen Dank, dass hat mich ein gutes Stück weiter.

Momentan kämpfe ich mit dem Öffnen des Wortes und dem Ausführen des Makros durch die Powershell. Mein Code sieht wie folgt nun:

$word = new-object -comobject word.application 
$path = 'C:\Users\---\Desktop\Download\' 
$folders = Get-ChildItem -Path $path -recurse | SELECT Attributes, Name | where-Object{ $_.Attributes -eq 'Directory'} | ForEach-Object{$_.name} 
foreach ($folder in $folders){ 
    Get-ChildItem -Path $path$folder | 
    Select-Object -First 1 | 
    ForEach-Object { notepad $_.FullName } 
} 

Ich versuche Notizen Wort zu ändern und die Makro aufrufen, aber bisher kein Glück

+0

Ist das Wort ausführbare Datei nicht ** ** gewinnen Word.exe genannt? – Compo

+0

leider ist es nicht so einfach :-( –

+0

Es war keine Lösung, nur eine Beobachtung, dass die Eingabe von 'word' zum Aufruf einer ausführbaren Datei mit dem Namen' winword' niemals funktioniert, wenn Sie nicht zuvor eine Methode zum 'Verknüpfen' erstellt haben die Namen. – Compo

Antwort

0

Hier ist ein Weg, um es in Powershell zu tun. Ich habe notepad.exe verwendet, aber Sie können verwenden, was Sie wollen.

Get-ChildItem -Path '../' -Filter '*.doc' | 
    Select-Object -First 1 | 
    ForEach-Object { notepad "$_.FullName" } 

Wenn Sie dies von einem cmd Shell .BAT Skript tun -must-, könnten Sie:

powershell -NoProfile -Command Get-ChildItem -Path '../' -Filter '*.doc' ^|^
    Select-Object -First 1 ^|^
    ForEach-Object { notepad \"$($_.FullName)\" } 

HT für die Flucht mklement0.

0

auf Ihrem Beispielcode Basierend und nachfolgende Kommentare, die folgenden Beispiel können Sie Ihre Word-Makro auf jeder der Dateien benötigen Sie laufen:

SetLocal EnableDelayedExpansion 
For /D %%A In ("parentfolder\*") Do (Set "_=" 
    For /F "Delims=" %%B In ('Dir/B/A-D-S-L/O-N "%%A\*.doc" 2^>Nul' 
    ) Do Set "_=%%B" 
    If Defined _ "%winword%" /mRTF "%%A\!_!") 
Verwandte Themen