2015-05-22 2 views
0

Мне нужен пакетный скрипт, в котором я могу поместить файлы или каталоги, и они будут скопированы на мой NAS. Я хочу перетащить файл (ы) или папку в пакет, а затем он выполнит свою работу. Существующие файлы или директории должны быть переопределены, и я не хочу получать некоторые вопросы для переопределения или sth. остальное. Также я хочу инсталлировать этот скрипт после этого в диалоговом окне «Отправить в окна». Я надеюсь, что вы сможете помочь :)Перетаскивание 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

Следующий сценарий показывает обработку пакетных параметров; позволяет использовать до 255 параметров, поставляемых через

  • copy & paste (выберите один или несколько файлов и папок, щелкните правой кнопкой мыши любой из выбран, выберите Copy. Затем щелкните правой кнопкой мыши на пакетный файл, выберите Вставить) или
  • drag & drop (процедура созвучно одной упомянутой выше), или
  • с помощью sendto меню, если вы разместили файл .bat (или его ярлык) в папку shell:sendto или
  • литий ne, например. drag-drop_30401166.bat files "b c".

Вы могли бы заменить echo folder, echo file и echo unknown линии с фрагментами коды подходит для вашего требования (например, xcopy, copy, robocopy и т.д.).

@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) щелкните правой кнопкой мыши по внутренней части папки и выберите новое и нажмите ярлык и введите местоположение элемента на циферблате. ог.