cmd for восклицательные знаки

Любые вопросы касающиеся ОС Windows и Linux

Модератор: Tim308

Ответить
Аватара пользователя
dyxen
Постоянный пользователь
Сообщения: 229
Зарегистрирован: 25 мар 2018, 18:01

cmd for восклицательные знаки

Сообщение dyxen » 16 апр 2018, 14:59

DesignerMix писал(а): 13 апр 2018, 22:26Это легко, просто взять кавычку в кавычки: '"'
ХА! Действительно, заработало) Значит в повершелл не обязательно использовать " можно использовать ' они имеют примерно/точно равнозначное действие, и пробелы можно добавить очень просто. Я правда до конца ещё не разобрался в этом коде, но думаю это дело времени.
Приведу полный вариант

Код: Выделить всё

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 писал(а): 13 апр 2018, 22:26для меня процесс написания скриптов на VBS вообще темный лес
смотря какие скрипты :lol:
Простенькие скрипты чтото у меня чуть-чуть получилось, ярлыки, там, полные пути к пользовательским папкам... Но так тоже почти ничего не знаю :)
DesignerMix писал(а): 13 апр 2018, 22:26Может в спам попадают?
ХА! Действительно, в спаме! Редко такое бывает) Никак не мог подумать... И с чего он взял что это спам...
DesignerMix писал(а): 13 апр 2018, 22:26можете нажать на "больше не лучший ответ" и потом выбрать новый
больше похоже не на кнопку а на уведомление, поэтому я посчитал его за уведомление (а хотел нажать :) )
Последний раз редактировалось DesignerMix 16 апр 2018, 15:10, всего редактировалось 1 раз.
Причина: Убрал один спойлер, так удобнее читать

Аватара пользователя
DesignerMix
Администратор
Администратор
Сообщения: 6654
Зарегистрирован: 25 апр 2014, 10:51
Откуда: Белгород
Контактная информация:

cmd for восклицательные знаки

Сообщение DesignerMix » 16 апр 2018, 15:10

dyxen писал(а): 16 апр 2018, 14:59Осталось ещё узнать как запустить из повершелл приложение, с данными параметрами, и я думаю будет "готовый вариант решения первоначальной задачи при помощи PowerShell" !
Ну да, надо разобраться с переменной и потом хоть в файл писать, хоть приложение запускать станет не проблемой.
dyxen писал(а): 16 апр 2018, 14:59Кстати его можно запускать 2х-кликом из cmd файла
удобно :super:

Аватара пользователя
dyxen
Постоянный пользователь
Сообщения: 229
Зарегистрирован: 25 мар 2018, 18:01

cmd for восклицательные знаки

Сообщение dyxen » 16 апр 2018, 15:22

DesignerMix писал(а): 16 апр 2018, 15:10надо разобраться с переменной
какой переменной? и что не работает?

Аватара пользователя
DesignerMix
Администратор
Администратор
Сообщения: 6654
Зарегистрирован: 25 апр 2014, 10:51
Откуда: Белгород
Контактная информация:

cmd for восклицательные знаки

Сообщение DesignerMix » 16 апр 2018, 22:34

dyxen, я не могу разобраться в какую переменную записываются пути до файлов... Как бы это странно не звучало.

По идее они хранятся в $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 
    } 
}

Аватара пользователя
dyxen
Постоянный пользователь
Сообщения: 229
Зарегистрирован: 25 мар 2018, 18:01

cmd for восклицательные знаки

Сообщение dyxen » 16 апр 2018, 22:52

Проверил - добавляются/открываются все песни.
Проверял в VLC Media Player (там ещё проще "%VLC% %list%" и всё.)
Добавлял пробелы в имена папок/файлов - добавляются/открываются все песни.

Аватара пользователя
DesignerMix
Администратор
Администратор
Сообщения: 6654
Зарегистрирован: 25 апр 2014, 10:51
Откуда: Белгород
Контактная информация:

cmd for восклицательные знаки

Сообщение DesignerMix » 16 апр 2018, 23:01

dyxen, отлично, ну вот получили две реализации скрипта

Аватара пользователя
dyxen
Постоянный пользователь
Сообщения: 229
Зарегистрирован: 25 мар 2018, 18:01

cmd for восклицательные знаки

Сообщение dyxen » 16 апр 2018, 23:21

Да!

Но...

Я попробовал через АИМП, заменил

Код: Выделить всё

&'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 восклицательные знаки

Сообщение DesignerMix » 16 апр 2018, 23:23

dyxen, понял, принял... Завтра подумаю еще. Наверняка это как-то просто решается

Аватара пользователя
DesignerMix
Администратор
Администратор
Сообщения: 6654
Зарегистрирован: 25 апр 2014, 10:51
Откуда: Белгород
Контактная информация:

cmd for восклицательные знаки

Сообщение DesignerMix » 17 апр 2018, 12:33

Разобрался :D

Поставил 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 
    } 
}

Аватара пользователя
dyxen
Постоянный пользователь
Сообщения: 229
Зарегистрирован: 25 мар 2018, 18:01

cmd for восклицательные знаки

Сообщение dyxen » 17 апр 2018, 17:24

ХА! Заработало! DesignerMix, КРАСАВЧИК :) :super:
Запятую я правда убрал, но это действительно
"РАБОЧИЙ ВАРИАНТ ПОИСКА ВСЕХ УКАЗАННЫХ ФАЙЛОВ В ЛЮБОМ УКАЗАННОМ РАСПОЛОЖЕНИИ И ПЕРЕДАЧА ЕГО ЛЮБОЙ ПРОГРАММЕ, ВЫПОЛНЕННАЯ НА 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 восклицательные знаки

Сообщение DesignerMix » 17 апр 2018, 20:14

dyxen, спасибо надо сказать этому каталогу скриптов и людям которые делятся тем, что сами используют - https://gallery.technet.microsoft.com/s ... 0%BA%D0%B8

Я лишь немного подкорректировал. Кстати я там очень много интересных решений нашел!

Аватара пользователя
dyxen
Постоянный пользователь
Сообщения: 229
Зарегистрирован: 25 мар 2018, 18:01

cmd for восклицательные знаки

Сообщение dyxen » 17 апр 2018, 20:37

DesignerMix писал(а): 17 апр 2018, 20:14каталогу скриптов и людям которые делятся тем, что сами используют
тож верно

вот ещё ссылка на интересную статью
ps
кстати меня повысили 8-) (у меня 30 лс)

Ответить

Вернуться в «Операционные системы»

Кто сейчас на конференции

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