Перетащите xcopy

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

Моей самой большой проблемой является функция перетаскивания.

Спасибо

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%"

person xsus    schedule 22.05.2015    source источник
comment
Когда вы перетаскиваете файл в пакетный скрипт, полный путь к файлу сохраняется в %1. (Если вы перетащите более одного файла, они будут сохранены в %2, %3 и т. д.)   -  person SomethingDark    schedule 22.05.2015


Ответы (2)


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

  • copy & paste (выберите несколько файлов и папок, щелкните правой кнопкой мыши любой из выбранных, выберите Копировать. Затем щелкните правой кнопкой пакетный файл, выберите Вставить) или
  • drag & drop (процедура, соответствующая упомянутой выше), или
  • с помощью меню sendto, если вы поместили файл .bat (или его ярлык) в папку shell:sendto, или
  • параметры линии, например. 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 . . .

Ресурсы (обязательно к прочтению):

person JosefZ    schedule 22.05.2015

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

person Jahwi    schedule 22.05.2015