![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Drag-and-drop нескольких файлов на bat |
|
CMD/BAT - [решено] Drag-and-drop нескольких файлов на bat
|
Старожил Сообщения: 345 |
|
|
Отправлено: 14:47, 01-08-2019 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Sisin, перечислить все файлы из каталога, который перетаскивается на пакетный файл/скрипт? И в каком именно конечном виде они нужны?
|
Отправлено: 17:58, 01-08-2019 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Sisin, Откуда берутся "file1" "file2" "file3".... ? Из аргументов при запуске скрипта? Вы выделяете эти файлы в проводнике и затягиваете выделенное на значок скрипта? Или Вам надо взять все файлы из какого-то указанного Вами каталога?
Что в аргументах скрипта при его запуске? 1. Список файлов 2. Одна папка с файлами 3. Ничего. В самом скрипте прописана папка, откуда надо взять все файлы? 4. Ничего. В самом скрипте прописан список файлов? |
------- Отправлено: 18:36, 01-08-2019 | #12 |
Старожил Сообщения: 345
|
Профиль | Отправить PM | Цитировать program1 получает файлы от меня путем drag-and-drop на батник, аргументы "file1|file2|file3", обрабатывает их и складывает в папку, например, C:\TEMP.
program2 забирает их из папки C:\TEMP, аргументы "file1" "file2" "file3", обрабатывает и складывает в виде одного файла рядом с батником. PS: Хотел вторую часть сам дописать, но не получилось((( |
Отправлено: 22:58, 01-08-2019 | #13 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Sisin, а откуда пакетный файл/скрипт узнает данное имя каталога:
Цитата Sisin:
|
|
Отправлено: 07:08, 02-08-2019 | #14 |
Старожил Сообщения: 345
|
Профиль | Отправить PM | Цитировать Цитата Iska:
В аргументах к program1 он указывается. |
|
Отправлено: 10:21, 02-08-2019 | #15 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Ну, например, так:
Скрытый текст
Option Explicit Const strPath2Programm1 = "c:\Windows\System32\notepad.exe" Const strPath2Programm2 = "c:\Windows\System32\calc.exe" Const strPath2Folder = "%Temp%\Some folder" Const intWindowStyle = 1 ' Activates and displays a window. ' If the window is minimized or maximized, ' the system restores it to its original size ' and position. An application should specify ' this flag when displaying the window ' for the first time. Dim arrArguments() Dim strArgument Dim i Dim objWshShell Dim strPath2WorkFolder If WScript.Arguments.Count > 0 Then ReDim arrArguments(WScript.Arguments.Count - 1) For i = 0 To WScript.Arguments.Count - 1 WScript.Echo "[" & WScript.Arguments.Item(i) & "]" arrArguments(i) = WScript.Arguments.Item(i) Next Set objWshShell = WScript.CreateObject("WScript.Shell") With WScript.CreateObject("Scripting.FileSystemObject") If Not .FileExists(strPath2Programm1) Then WScript.Echo "Can't find programm file [" & strPath2Programm1 & "]." WScript.Quit 2 End If If Not .FileExists(strPath2Programm2) Then WScript.Echo "Can't find programm file [" & strPath2Programm2 & "]." WScript.Quit 3 End If For Each strArgument In arrArguments If Not .FileExists(strArgument) Then WScript.Echo "Can't find source file [" & strArgument & "]." WScript.Quit 4 End If Next strPath2WorkFolder = objWshShell.ExpandEnvironmentStrings(strPath2Folder) If Not .FolderExists(strPath2WorkFolder) Then .CreateFolder strPath2WorkFolder End If objWshShell.Run """" & strPath2Programm1 & """ /WorkFolderParameter """ & strPath2WorkFolder & """ """ & Join(arrArguments, "|") & """", intWindowStyle, True objWshShell.Run """" & strPath2Programm2 & """ /WorkFolderParameter """ & strPath2WorkFolder & """ """ & Join(arrArguments, """ """) & """", intWindowStyle, True If .FolderExists(strPath2WorkFolder) Then .DeleteFolder strPath2WorkFolder, True End If End With Set objWshShell = Nothing Else WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source file1> [<Source file2> [...<Source fileN>]]" WScript.Quit 1 End If WScript.Quit 0 |
Отправлено: 11:02, 02-08-2019 | #16 |
Старожил Сообщения: 345
|
Профиль | Отправить PM | Цитировать Цитата Iska:
Но как подправить этот вариант: На выходе получается: program.exe " "file1" "file2" "file3". Как убрать одну лишнюю кавычку, которая идет сразу после program.exe???? |
|
Отправлено: 11:40, 02-08-2019 | #17 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Цитата Sisin:
Вот вариант
@Echo Off cls Set "DirTmp=Z:\Tmp.dir" If "%~1"=="" (Echo No arguments &Pause &Exit /b 2) If Exist "%DirTmp%" Rd /S /Q "%DirTmp%" Md "%DirTmp%" Set "A=" Set "B=" rem For %%i In (%*) Do Call Set "A=%%A%%|"%%~i"" &Call Set "B=%%A%%|"%DirTmp%\%%~nxi"" For %%i In (%*) Do Call Set "A=%%A%%|%%~i" &Call Set "B=%%B%%|%DirTmp%\%%~nxi" Call Set A="%A:~1%" Call Set B="%B:~1%" echo on program1 %A% program2 %B% Rd /S /Q "%DirTmp%" Pause Exit /B Цитата:
|
||
------- Последний раз редактировалось megaloman, 02-08-2019 в 12:27. Отправлено: 12:08, 02-08-2019 | #18 |
Ветеран Сообщения: 2735
|
Профиль | Отправить PM | Цитировать Цитата Sisin:
@Echo Off
cls
Set "DirTmp=Z:\Tmp.dir"
Set "Prog=Program.exe"
For %%i In ("%DirTmp%\*.*") Do Call Set "Prog=%%Prog%% "%%i""
echo on
%Prog%
Pause
Exit /B
@Echo Off
cls
Set "DirTmp=Z:\Tmp.dir"
Set "Arg="
For %%i In ("%DirTmp%\*.*") Do Call Set "Arg=%%Arg%% "%%i""
echo on
Program.exe%Arg%
Pause
Exit /B
Результат Цитата:
|
||
------- Последний раз редактировалось megaloman, 02-08-2019 в 12:37. Отправлено: 12:27, 02-08-2019 | #19 |
Старожил Сообщения: 345
|
Профиль | Отправить PM | Цитировать Супер) Собрал из частей как надо.
Остался один момент: program2 имеет аргумент вывода конечного файла вида program2 "file1" "file1" "file1" -out fileout. При запуске батника напрямую (из папки, в которой он лежит) конечный файл создается в той папке, из которой драгенддропнули файлы на батник. При запуске батника через ярлык конечный файл создается в папке с батником. Можно ли сделать, чтобы при запуске батника через ярлык, конечный файл создавался в той папке, из которой драгенддропнули файлы на батник? |
Отправлено: 13:04, 02-08-2019 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Интерфейс - Перетаскивание (drag'n'drop) в браузерах | Jaye | Microsoft Windows 10 | 6 | 16-01-2016 19:23 | |
Разное - UAC, Drag-and-drop и Photoshop | alexv1962 | Microsoft Windows 7 | 5 | 17-09-2011 12:56 | |
Интерфейс - [решено] Упорядочивание папок и файлов методом Drag&Drop | Bobbydream | Microsoft Windows 7 | 3 | 25-11-2009 02:24 | |
Глюк с иконками на рабочем столе: перестал работать Drag&Drop | Vasosel | Microsoft Windows NT/2000/2003 | 5 | 19-07-2006 09:04 | |
Drag And Drop на JavaScript | strejiok | Вебмастеру | 8 | 11-07-2006 21:42 |
|