2016-09-20 50 views
0

我第一次創建批處理文件,並且沒有太多的語言暴露,所以請裸露在我身邊。使用批處理文件打開用戶輸入的文件夾

我必須從文件夾中提取文件的名稱並將它們粘貼到文本文檔(Word文檔將是理想的,但我發現了一種鏈接方式並自動用文本文件的內容更新文字文件)。

我在想的是打開一個對話框來詢問用戶文件夾的路徑。然後我會使用dir函數並將這些值粘貼到文本文件中。

我可以獲取名稱,但批處理文件必須位於同一文件夾中。我想要對話框,有沒有辦法做到這一點?我並不真的希望用戶在cmd提示符下鍵入整個文件夾路徑。

欣賞響應 PARTH

+0

只是爲了確保:你需要一種方法來改變一個文件夾/路徑與用戶的輸入。這個輸入不應該是一個完整的路徑? – geisterfurz007

+1

發佈您目前擁有的代碼。 – Jonas

+0

我的意思是當用戶運行腳本時,打開一個FileOpenDialog Box,用戶可以在其中導航到相應的文件夾並選擇它。代碼然後獲取用戶選擇的文件夾的整個路徑,並將其設置爲從哪裏獲取文件名的路徑。我現在沒有任何代碼。只需一個文件名即可獲得文本文件 –

回答

0

這就是你需要的代碼來瀏覽文件夾並選擇它:

Browse4Folder.bat從該批處理文件中使用Local_Batch_Engine.bat

@echo off 
Title Browse4Folder 
Color 0A 
Call :Browse4Folder "Choose source folder to scan" "c:\scripts" 
echo You have chosen this location "%Location%" 
pause & exit 
::*************************************************************************** 
:Browse4Folder 
set Location= 
set vbs="%temp%\_.vbs" 
set cmd="%temp%\_.cmd" 
for %%f in (%vbs% %cmd%) do if exist %%f del %%f 
for %%g in ("vbs cmd") do if defined %%g set %%g= 
(
    echo set shell=WScript.CreateObject("Shell.Application"^) 
    echo set f=shell.BrowseForFolder(0,"%~1",0,"%~2"^) 
    echo if typename(f^)="Nothing" Then 
    echo wscript.echo "set Location=Dialog Cancelled" 
    echo WScript.Quit(1^) 
    echo end if 
    echo set fs=f.Items(^):set fi=fs.Item(^) 
    echo p=fi.Path:wscript.echo "set Location=" ^& p 
)>%vbs% 
cscript //nologo %vbs% > %cmd% 
for /f "delims=" %%a in (%cmd%) do %%a 
for %%f in (%vbs% %cmd%) do if exist %%f del /f /q %%f 
for %%g in ("vbs cmd") do if defined %%g set %%g= 
goto :eof 
::*************************************************************************** 
+1

工程就像一個魅力,非常感謝。現在我只需要進一步編輯它以獲取文本文件夾中的內容。你能告訴我,如果我可以做到這一點的MS Word文檔? –

+1

@ParthBakshi我很高興這個答案對你有所幫助,因此你應該爲你的批次的最後一部分提出一個新問題,你可以將這個答案鏈接到它;) 你可以看看這個批處理文件[Local_Search_Engine .bat](http://pastebin.com/ADdjPEfH)它使用Browse4Folder並可以保存日誌文件並複製在桌面上創建的文件夾中找到的所有文件 – Hackoo