2016-09-20 220 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