Пакетная команда для папки просмотра - PullRequest
0 голосов
/ 03 сентября 2011

Я новичок в пакетном скриптинге. Я хочу программно найти папку, а затем скопировать содержимое текущего каталога в указанный каталог.

У меня есть скрипт VBScript (ниже), который позволяет мне искать папку. Как я могу связать пакетный файл с этим? То есть после запуска сценария и выбора папки файлы должны быть перемещены в выбранную папку. Возможно ли это?

Вот мой код VBScript для просмотра папки:

Option Explicit

WScript.Echo BrowseFolder( "C:\Program Files", True )
WScript.Echo BrowseFolder( "My Computer", False )
WScript.Echo BrowseFolder( "", False )


Function BrowseFolder( myStartLocation, blnSimpleDialog )
' This function generates a Browse Folder dialog
' and returns the selected folder as a string.
'
' Arguments:
' blnSimpleDialog   [boolean] if False, an additional text field will be
'                             displayed where the folder can be selected
'                             by typing the fully qualified path
'
' Returns:          [string]  the fully qualified path to the selected folder
'
' Based on the Hey Scripting Guys article
' "How Can I Show Users a Dialog Box That Only Lets Them Select Folders?"
' http://www.microsoft.com/technet/scriptcenter/resources/qanda/jun05/hey0617.mspx
'
' Function written by Rob van der Woude
' http://www.robvanderwoude.com
    Const MY_COMPUTER   = &H11&
    Const WINDOW_HANDLE = 0 ' Must ALWAYS be 0

    Dim numOptions, objFolder, objFolderItem
    Dim objPath, objShell, strPath, strPrompt

    ' Set the options for the dialog window
    strPrompt = "Select a folder:"
    If blnSimpleDialog = True Then
    numOptions = 0      ' Simple dialog
    Else
        numOptions = &H10&  ' Additional text field to type folder path
    End If

    ' Create a Windows Shell object
    Set objShell = CreateObject( "Shell.Application" )

    ' If specified, convert "My Computer" to a valid
    ' path for the Windows Shell's BrowseFolder method
    If UCase( myStartLocation ) = "MY COMPUTER" Then
        Set objFolder = objShell.Namespace( MY_COMPUTER )
        Set objFolderItem = objFolder.Self
        strPath = objFolderItem.Path
    Else
        strPath = myStartLocation
    End If

    Set objFolder = objShell.BrowseForFolder( WINDOW_HANDLE, strPrompt, _
                                          numOptions, strPath )

    ' Quit if no folder was selected
    If objFolder Is Nothing Then
        BrowseFolder = ""
        Exit Function
    End If

    ' Retrieve the path of the selected folder
    Set objFolderItem = objFolder.Self
    objPath = objFolderItem.Path

    ' Return the path of the selected folder
    BrowseFolder = objPath
End Function

Ответы [ 2 ]

0 голосов
/ 08 мая 2012

Если вы действительно хотите использовать пакет, вы можете передать значение в переменную окружения или записать его в io.out для передачи значения, но ничего из этого не рекомендуется.Вы также можете записать значение во временный текстовый файл и сделать так, чтобы ваш пакет использовал это значение.Лучшее и самое простое решение - выполнить копирование в самом скрипте, множество примеров для этого, больше возможностей реагировать на ошибки.Дайте мне знать, если вы не можете его найти, у меня он есть, но перед публикацией необходимо удалить некоторые данные.

0 голосов
/ 05 сентября 2011

Хотите ли вы использовать в пакете ту же функцию, что и в вашем VBScript? Если это так, я не думаю, что вы можете использовать OpenFileDialog с пакетом, очень легко с Visual Studio и C # (стоит посмотреть). Если вы хотите сделать это в пакетном режиме, вы можете использовать это:

set /p path=Enter folder path: 
xcopy /e %cd% %path%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...