2015-05-22 31 views
0

我需要一個批處理腳本,在該腳本中我可以放置文件或導演,並將它們複製到我的NAS中。我想拖動批處理文件或文件夾,然後完成他的工作。現有的文件或目錄應該被覆蓋,我不想得到一些問題的重寫或某事。其他。另外,我希望在發送到窗口的對話框中完成此腳本。我希望你能幫助:)拖放xcopy

我最大的問題是拖放功能。

謝謝

PS: 這段代碼我在網上的拖放找到,但我不明白-.-

@echo off & setlocal 
set "Ein=meinedatei.txt" 
set "Aus=meinedatei.dat" 

if exist "%Aus%" del "%Aus%" 
set Zuletzt=- 
for /f "tokens=2" %%i in ('findstr ".rst .pop" "%Ein%"^|sort') do call :ProcessLink "%%~i" 
goto :eof 

:ProcessLink 
if %1==%Zuletzt% goto :eof 
set Zuletzt="%~1" 
(echo /%~1)>>"%Aus%" 
+2

當您將文件拖到一個批處理腳本,文件的完整路徑被存儲在'%1'。(如果拖動多個文件,它們將存儲在'%2','%3'等中) – SomethingDark

回答

0

下一個腳本顯示批處理參數處理;最多允許通過

  • copy & paste提供(選擇一些文件和文件夾,右鍵點擊任何的選擇,選擇複製,然後右鍵單擊該批處理文件,選擇粘貼)255個參數,或
  • drag & drop (程序適形於上述的一種)使用sendto菜單,或
  • 如果已放置在文件.bat(或它的快捷方式)插入shell:sendto文件夾,或
  • 利ne參數,例如drag-drop_30401166.bat files "b c"

您可以取代echo folderecho fileecho unknown線,代碼片段適合您的要求(例如xcopycopyrobocopy等)。

@echo OFF >NUL 
SETLOCAL enableextensions 
echo(
echo before any shift [%~0] [%~1] [%~2] [%~3] [%~4] 
echo all %%* = %* 
echo(
set /A "ii=1" 
:loopfor 
    If exist "%~1\" (
     echo folder %%%ii% = %1 
) else (
     If exist "%~1" (
      echo file %%%ii% = %1 
    ) else (
      echo unknown %%%ii% = %1 
    ) 
) 
    SHIFT 
    set /A "ii+=1" 
    if not [%1]==[] goto :loopfor 
echo(
shift 
echo after all shifts [%~0] [%~1] [%~2] [%~3] [%~4] 
echo all %%* = %* 
pause 
goto :eof 

輸出樣本

before any shift [D:\bat\StackOverflow\drag-drop_30401166.bat] [D:\bat\runcmd.vb 
s] [D:\bat\crlferror.bat] [D:\bat\UnASCII Names] [D:\bat\Unusual Names] 
    all %* = D:\bat\runcmd.vbs D:\bat\crlferror.bat "D:\bat\UnASCII Names" "D:\bat 
\Unusual Names" 

    file %1 = D:\bat\runcmd.vbs 
    file %2 = D:\bat\crlferror.bat 
folder %3 = "D:\bat\UnASCII Names" 
folder %4 = "D:\bat\Unusual Names" 

after all shifts [] [] [] [] [] 
    all %* = D:\bat\runcmd.vbs D:\bat\crlferror.bat "D:\bat\UnASCII Names" "D:\bat 
\Unusual Names" 
Press any key to continue . . . 

輸出(在命令行提供的參數):

==>drag-drop_30401166.bat files "b c" 

before any shift [drag-drop_30401166.bat] [files] [b c] [] [] 
    all %* = files "b c" 

folder %1 = files 
unknown %2 = "b c" 

after all shifts [] [] [] [] [] 
    all %* = files "b c" 
Press any key to continue . . . 

資源(必讀):

0
@echo off 
:a 
cls 
set /p file=::drag and drop file you want to copy here:: 
if not exist "%file%" echo file does not exist && pause && goto :a 
set /p dest=Destination path/folder: 
if not exist "%dest%" echo path does not exist && pause && goto :a 
copy /y %file% %dest% 
if %errorlevel%==0 echo copy successful && pause && goto :a 
echo copy failed. 
pause 
goto :a 

另外,如果你想輕鬆在發送到菜單中包含路徑/驅動器/文件夾: 1)打開cmd並鍵入:start %appdata%\microsoft\windows\sendto 2)右鍵單擊文件夾內部並選擇新建,然後單擊快捷方式並在撥號盤中鍵入項目的位置OG。