cmd for восклицательные знаки
Модератор: Tim308
cmd for восклицательные знаки
ХА! Действительно, заработало) Значит в повершелл не обязательно использовать " можно использовать ' они имеют примерно/точно равнозначное действие, и пробелы можно добавить очень просто. Я правда до конца ещё не разобрался в этом коде, но думаю это дело времени.
Приведу полный вариант
Код: Выделить всё
param
(
[parameter()][string] $FolderPath,
[parameter()][string] $FileExtension
)
$Result = (Test-Path($FolderPath));
If ($Result)
{
$Dir = get-childitem $FolderPath -recurse
$List = $Dir | where {$_.extension -eq $FileExtension} | % {Write-Host '"'$_.FullName'" ' -nonewline}
$List | format-table Name
}
else
{
"Folder path is incorrect."
}
function TestPath()
{
$FileExists = Test-Path $FolderPath
If ($FileExists -eq $True)
{
Return $true
}
Else
{
Return $false
}
}
Осталось ещё узнать как запустить из повершелл приложение, с данными параметрами, и я думаю будет "готовый вариант решения первоначальной задачи при помощи PowerShell" !
Кстати его можно запускать 2х-кликом из cmd файла
Код: Выделить всё
@echo off
set dir1=d:\dir1
set ext1=.mp3
"powershell.exe" ".\wwwww1.ps1 -FolderPath '%dir1%' -FileExtension '%ext1%'"
echo.
echo.
pause
exit /b

Последний раз редактировалось DesignerMix 16 апр 2018, 15:10, всего редактировалось 1 раз.
Причина: Убрал один спойлер, так удобнее читать
Причина: Убрал один спойлер, так удобнее читать
- DesignerMix
- Администратор
- Сообщения: 6654
- Зарегистрирован: 25 апр 2014, 10:51
- Откуда: Белгород
- Контактная информация:
cmd for восклицательные знаки
Ну да, надо разобраться с переменной и потом хоть в файл писать, хоть приложение запускать станет не проблемой.
удобно

cmd for восклицательные знаки
какой переменной? и что не работает?
- DesignerMix
- Администратор
- Сообщения: 6654
- Зарегистрирован: 25 апр 2014, 10:51
- Откуда: Белгород
- Контактная информация:
cmd for восклицательные знаки
dyxen, я не могу разобраться в какую переменную записываются пути до файлов... Как бы это странно не звучало.
По идее они хранятся в $List, но при запуске плеера например так:
Нашел что в powershell переменные это объекты и нужно видимо к данным обращаться иначе... Пока не разобрался с этим.
Отправлено спустя 1 час 43 минуты 42 секунды:
Вроде понял, из-за write-host все не работало, если так, то у меня открывается плеер, правда не могу пока понять как разделить... Если есть возможность проверьте в вашем плеере будут-ли добавлятся все песни или только последняя:
По идее они хранятся в $List, но при запуске плеера например так:
&'C:\Program Files (x86)\K-Lite Codec Pack\MPC-HC64\mpc-hc64.exe' /play /add $List
список файлов не подставляется. Если-же я создам другую переменную и просто в виде текста впишу путь до файла и также поставлю, то плеер запутится как надо.Нашел что в powershell переменные это объекты и нужно видимо к данным обращаться иначе... Пока не разобрался с этим.
Отправлено спустя 1 час 43 минуты 42 секунды:
Вроде понял, из-за write-host все не работало, если так, то у меня открывается плеер, правда не могу пока понять как разделить... Если есть возможность проверьте в вашем плеере будут-ли добавлятся все песни или только последняя:
Код: Выделить всё
param
(
[parameter()][string] $FolderPath,
[parameter()][string] $FileExtension
)
$Result = (Test-Path($FolderPath));
If ($Result)
{
$Dir = get-childitem $FolderPath -recurse
$List = $Dir | where {$_.extension -eq $FileExtension} | % {$_.FullName}
&'C:\Program Files (x86)\K-Lite Codec Pack\MPC-HC64\mpc-hc64.exe' /play /add $List
}
else
{
"Folder path is incorrect."
}
function TestPath()
{
$FileExists = Test-Path $FolderPath
If ($FileExists -eq $True)
{
Return $true
}
Else
{
Return $false
}
}
cmd for восклицательные знаки
Проверил - добавляются/открываются все песни.
Проверял в VLC Media Player (там ещё проще "%VLC% %list%" и всё.)
Добавлял пробелы в имена папок/файлов - добавляются/открываются все песни.
Проверял в VLC Media Player (там ещё проще "%VLC% %list%" и всё.)
Добавлял пробелы в имена папок/файлов - добавляются/открываются все песни.
- DesignerMix
- Администратор
- Сообщения: 6654
- Зарегистрирован: 25 апр 2014, 10:51
- Откуда: Белгород
- Контактная информация:
cmd for восклицательные знаки
dyxen, отлично, ну вот получили две реализации скрипта
cmd for восклицательные знаки
Да!
Но...
Я попробовал через АИМП, заменил
на
и ошибка
наверняка ему нужны кавычки...
Отправлено спустя 3 минуты 45 секунд:
И ещё хотел добавить вывод списка на экран командой
, выводит, но опять же без кавычек. А без кавычек стоило ожидать что какой-нибудь программе да не понравится... Тем боле если будут пробелы в путях...
Но...
Я попробовал через АИМП, заменил
Код: Выделить всё
&'c:\Program Files\VideoLAN\VLC\vlc.exe' $List
Код: Выделить всё
&'c:\Ustanovl_Programmy\Programs\AIMP3\AIMP3.exe' /add_play $List
Код: Выделить всё
File: D:\dir1\track1.mp3 D:\dir1\track2.mp3 D:\dir1\track3_!.mp3 D:\dir1\track4_!.mp3 D:\dir1\Разн_1\track1.mp3 D:\dir1\Разн_1\track2.mp3 D:\dir1\Разн_1\track3_!.mp3 D:\dir1\Разн_1\track4_!.mp3
Code: 2 (00000002)
Message: Can't open the file
Отправлено спустя 3 минуты 45 секунд:
И ещё хотел добавить вывод списка на экран командой
Код: Выделить всё
Write-Host '"'$List'" ' -nonewline
- DesignerMix
- Администратор
- Сообщения: 6654
- Зарегистрирован: 25 апр 2014, 10:51
- Откуда: Белгород
- Контактная информация:
cmd for восклицательные знаки
dyxen, понял, принял... Завтра подумаю еще. Наверняка это как-то просто решается
- DesignerMix
- Администратор
- Сообщения: 6654
- Зарегистрирован: 25 апр 2014, 10:51
- Откуда: Белгород
- Контактная информация:
cmd for восклицательные знаки
Разобрался
Поставил AIMP, и на нем проверял. Получилось так (list2 думаю можно не использовать, а просто модифицировать list, но уже не стал проверять):

Поставил AIMP, и на нем проверял. Получилось так (list2 думаю можно не использовать, а просто модифицировать list, но уже не стал проверять):
Код: Выделить всё
param
(
[parameter()][string] $FolderPath,
[parameter()][string] $FileExtension
)
$Result = (Test-Path($FolderPath));
If ($Result)
{
$Dir = get-childitem $FolderPath -recurse
$List = $Dir | where {$_.extension -eq $FileExtension} | % {$_.FullName}
$List2 = $List -join '", "'
$List2 = '"' + $List2 + '"'
&'C:\Program Files (x86)\AIMP\aimp.exe' /add_play $List2
}
else
{
"Folder path is incorrect."
}
function TestPath()
{
$FileExists = Test-Path $FolderPath
If ($FileExists -eq $True)
{
Return $true
}
Else
{
Return $false
}
}
cmd for восклицательные знаки
ХА! Заработало! DesignerMix, КРАСАВЧИК
Запятую я правда убрал, но это действительно
"РАБОЧИЙ ВАРИАНТ ПОИСКА ВСЕХ УКАЗАННЫХ ФАЙЛОВ В ЛЮБОМ УКАЗАННОМ РАСПОЛОЖЕНИИ И ПЕРЕДАЧА ЕГО ЛЮБОЙ ПРОГРАММЕ, ВЫПОЛНЕННАЯ НА POWERSHELL ! "
Браво Дизайнер
!
Отправлено спустя 3 минуты 14 секунд:
Кстати вот код без запятой


Запятую я правда убрал, но это действительно
"РАБОЧИЙ ВАРИАНТ ПОИСКА ВСЕХ УКАЗАННЫХ ФАЙЛОВ В ЛЮБОМ УКАЗАННОМ РАСПОЛОЖЕНИИ И ПЕРЕДАЧА ЕГО ЛЮБОЙ ПРОГРАММЕ, ВЫПОЛНЕННАЯ НА POWERSHELL ! "
Браво Дизайнер

Отправлено спустя 3 минуты 14 секунд:
Кстати вот код без запятой
Код: Выделить всё
param
(
[parameter()][string] $FolderPath,
[parameter()][string] $FileExtension
)
$Result = (Test-Path($FolderPath));
If ($Result)
{
$Dir = get-childitem $FolderPath -recurse
$List = $Dir | where {$_.extension -eq $FileExtension} | % {$_.FullName}
$List2 = $List -join '" "'
$List2 = '"' + $List2 + '"'
# $List2
&'c:\Program files\AIMP3\AIMP3.exe' /add_play $List2
}
else
{
"Folder path is incorrect."
}
function TestPath()
{
$FileExists = Test-Path $FolderPath
If ($FileExists -eq $True)
{
Return $true
}
Else
{
Return $false
}
}
- DesignerMix
- Администратор
- Сообщения: 6654
- Зарегистрирован: 25 апр 2014, 10:51
- Откуда: Белгород
- Контактная информация:
cmd for восклицательные знаки
dyxen, спасибо надо сказать этому каталогу скриптов и людям которые делятся тем, что сами используют - https://gallery.technet.microsoft.com/s ... 0%BA%D0%B8
Я лишь немного подкорректировал. Кстати я там очень много интересных решений нашел!
Я лишь немного подкорректировал. Кстати я там очень много интересных решений нашел!
cmd for восклицательные знаки
тож верноDesignerMix писал(а): ↑17 апр 2018, 20:14каталогу скриптов и людям которые делятся тем, что сами используют
вот ещё ссылка на интересную статью

Кто сейчас на конференции
Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей