2017-07-20 87 views
2

執行對第一個文件的行動我想在一組子目錄上按字母順序排列第一文件執行一個命令在批處理文件中使用每個子目錄

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

。實際的命令和宏工作正常,但它對目錄中的每個文件執行操作,而不僅僅是我想要的操作。

有沒有辦法在這種情況下設置-on標誌?

任何幫助將不勝感激。


謝謝,讓我更進一步。

目前我正在努力打開單詞並通過PowerShell運行宏。我的代碼看起來像現在這樣:

$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 } 
} 

我試圖改變記事本字和調用宏,但到目前爲止沒有運氣

+0

這個詞可執行文件不叫** **贏得word.exe? – Compo

+0

不幸的是,這並不容易:-( –

+0

這不是一個解決方案,只是一個觀察,即鍵入'word'來調用名爲'winword'的可執行文件永遠不會工作,除非您預先創建了一個'鏈接' – Compo

回答

0

這裏是一個辦法做到這一點在PowerShell中。我使用notepad.exe,但你可以使用任何你想要的。

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

如果-must-做到這一點從CMD外殼蝙蝠腳本,你可以:

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

HT到mklement0轉義。

0

基於您的示例代碼和隨後的評論,下面的例子可以在每個你需要的文件運行Word宏:

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\!_!") 
相關問題