Имя пользователя:
Пароль:
 | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Drag-and-drop нескольких файлов на bat

Ответить
Настройки темы
CMD/BAT - [решено] Drag-and-drop нескольких файлов на bat

Аватара для Sisin

Старожил


Сообщения: 345
Благодарности: 9

Профиль | Отправить PM | Цитировать


Подскажите, как сделать так, чтобы обрабатывались все файлы сразу за один проход, а не по одному как здесь:

Код: Выделить весь код
@echo OFF
for %%i in (%*) do (
program %%i
)
exit
т.е. допустим program поддерживает команду program file1 file2 file3....

Отправлено: 14:47, 01-08-2019

 

Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Код: Выделить весь код
@Echo Off
	echo program %*
Pause
Exit /B
Echo, естественно, при реальной программе надо убить.

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 01-08-2019 в 15:28.

Это сообщение посчитали полезным следующие участники:

Отправлено: 15:09, 01-08-2019 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для Sisin

Старожил


Сообщения: 345
Благодарности: 9

Профиль | Отправить PM | Цитировать


Сработало только без echo.

Отправлено: 15:33, 01-08-2019 | #3


Аватара для Sisin

Старожил


Сообщения: 345
Благодарности: 9

Профиль | Отправить PM | Цитировать


А если надо сделать так: program "file1|file2|file3".... на что надо заменить %* ???

Отправлено: 16:06, 01-08-2019 | #4


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Цитата Sisin:
program "file1|file2|file3".... »
Код: Выделить весь код
@Echo Off
cls
	If "%*"=="" (Echo No arguments &Pause &Exit /b 2)
	
	Set "A="
	For %%i In (%*) Do Call Set "A=%%A%%|%%i"
	Call Set A="%A:~1%"
echo on
	program %A%
Pause
Exit /B
В боевом варианте Echo on не нужен

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Отправлено: 16:55, 01-08-2019 | #5


Ветеран


Сообщения: 27449
Благодарности: 8088

Профиль | Отправить PM | Цитировать


На WSH:
Скрытый текст
Код: Выделить весь код
Option Explicit

Const strPath2Programm = "c:\Windows\System32\notepad.exe"


Dim arrArguments()
Dim strArgument

Dim i


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
	
	With WScript.CreateObject("Scripting.FileSystemObject")
		If Not .FileExists(strPath2Programm) Then
			WScript.Echo "Can't find programm file [" & strPath2Programm & "]."
			WScript.Quit 2
		End If
		
		For Each strArgument In arrArguments
			If Not .FileExists(strArgument) Then
				WScript.Echo "Can't find source file [" & strArgument & "]."
				WScript.Quit 3
			End If
		Next
	End With
	
	WScript.CreateObject("WScript.Shell").Run """" & strPath2Programm & """ """ & Join(arrArguments, "|") & """"
Else
	WScript.Echo "Usage: cscript.exe //nologo """ & WScript.ScriptName & """ <Source file1> [<Source file2> [...<Source fileN>]]"
	WScript.Quit 1
End If

WScript.Quit 0


megaloman, а если пробельные символы в имени файла?
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:58, 01-08-2019 | #6


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Iska,
Цитата Iska:
megaloman, а если пробельные символы в имени файла? »
Понятия не имею что с кавычками. Если можно program ""file1"|"file2"|"file3"" то
Код: Выделить весь код
	For %%i In (%*) Do Call Set "A=%%A%%|"%%~i""

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.


Последний раз редактировалось megaloman, 01-08-2019 в 17:30.


Отправлено: 17:06, 01-08-2019 | #7


Аватара для Sisin

Старожил


Сообщения: 345
Благодарности: 9

Профиль | Отправить PM | Цитировать


Цитата megaloman:
Понятия не имею что с кавычками. Если можно program ""file1"|"file2"|"file3"" то »
Нет, только так: "file1|file2|file3"

Отправлено: 17:20, 01-08-2019 | #8


Ветеран


Contributor


Сообщения: 2735
Благодарности: 1699

Профиль | Отправить PM | Цитировать


Iska, Sisin,
Тогда вот эдак
Запускаю Скрипт.bat "fi le 1.txt" file1.txt "fi le 2.txt" file2.txt "fi le 3.txt" file3.txt
Код: Выделить весь код
@Echo Off
cls
	If "%~1"=="" (Echo No arguments &Pause &Exit /b 2)
	
	Set "A="
rem	For %%i In (%*) Do Call Set "A=%%A%%|"%%~i""
	For %%i In (%*) Do Call Set "A=%%A%%|%%~i"
	Call Set A="%A:~1%"
echo on
	program %A%
Pause
Exit /B
Получаю:
Цитата:
Z:\>program "fi le 1.txt|file1.txt|fi le 2.txt|file2.txt|fi le 3.txt|file3.txt"
"program" не является внутренней или внешней
командой, исполняемой программой или пакетным файлом.

Естественно такой программы у меня нет, но аргументы как заказывали

-------
Даже самая сложная проблема обязательно имеет простое, лёгкое для понимания, неправильное решение. Каждое решение плодит новые проблемы.

Это сообщение посчитали полезным следующие участники:

Отправлено: 17:32, 01-08-2019 | #9


Аватара для Sisin

Старожил


Сообщения: 345
Благодарности: 9

Профиль | Отправить PM | Цитировать


Я прошу прощения за назойливость, но как теперь получить аргументы вида "file1" "file2" "file3".... из конкретной папки, например, C:\temp??

Отправлено: 17:55, 01-08-2019 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Drag-and-drop нескольких файлов на bat

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Интерфейс - Перетаскивание (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




 
Переход