![]() |
Внимание, важное сообщение: Дорогие Друзья!
В ноябре далекого 2001 года мы решили создать сайт и форум, которые смогут помочь как начинающим, так и продвинутым пользователям разобраться в операционных системах. В 2004-2006г наш проект был одним из самых крупных ИТ ресурсов в рунете, на пике нас посещало более 300 000 человек в день! Наша документация по службам Windows и автоматической установке помогла огромному количеству пользователей и сисадминов. Мы с уверенностью можем сказать, что внесли большой вклад в развитие ИТ сообщества рунета. Но... время меняются, приоритеты тоже. И, к сожалению, пришло время сказать До встречи! После долгих дискуссий было принято решение закрыть наш проект. 1 августа форум переводится в режим Только чтение, а в начале сентября мы переведем рубильник в положение Выключен Огромное спасибо за эти 24 года, это было незабываемое приключение. Сказать спасибо и поделиться своей историей можно в данной теме. С уважением, ваш призрачный админ, BigMac... |
|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - Слова вводимые пользователем разбить на части и присвоить переменным |
|
CMD/BAT - Слова вводимые пользователем разбить на части и присвоить переменным
|
Новый участник Сообщения: 9 |
Нужно запросить у пользователя ввод текста, разбить текст на части (пробел означает новая часть) и каждую часть присвоить отдельной переменной, значение которой будет являться именем файла, то есть на каждое слово будет создаваться один файл.
Слов может быть до 16 штук. Можно через Powershell или любой другой инструмент который есть на Win10? можно даже будет скачать что-нибудь. Самое главное чтобы можно было это записать в файлик и при запуске срабатывал сценарий. Как я это представляю: *пользователь вводит: advantages works about portfolio order call* *Создалось 6 файлов: advantages.html works.html about.html portfolio.html order.html call.html* Всем спасибо за любые советы и подсказки. P.S Еще дополнительный вопрос появился, возможно ли запускать программу из BAT и сразу закрывать окно после этого? Я знаю что можно запускать exe через start, но у меня специальная команда "code ." которая запускает программу vscode с уже открытой папкой (откуда вызвали саму программу), и после нее батник приходится закрывать вручную, либо окно закрывается когда я закрываю visual studio code. |
|
Отправлено: 21:34, 01-08-2019 |
Crazy Сообщения: 1235
|
Профиль | Отправить PM | Цитировать zerdox@vk,
В личке лучше не решать задачи, тут больше людей, которые всегда могут подсказать какой-либо другой вариант и возможно он будет лучшим. В общем, примерно так: script.ps1 - кодировка utf8 param( [string]$path = '.', [string]$extension = ".html" ) if (!(test-path $path)){ write-host Такого пути не существует. Создаем каталог $path -for red md $path|out-null } $var = read-host "Files" [array]$var = $var.split() $var|%{ni -p $path -n ("$_"+$extension) -it 'file' -v @" <section id="$_"> <div class="content"> </div> </section> "@ } естественно, в том месте, в момент выполнения кода, переменная %project_name% должна существовать. Если в этой переменной присутствует относительный путь, то во избежание различных коллизий, лучше привести путь к абсолютному, т.к. не проверял скрипт на работу с относительными путями... Путь к скрипту powershell можно тоже заменить на абсолютный, если потребуется. |
------- Последний раз редактировалось YuS_2, 03-08-2019 в 09:37. Отправлено: 09:29, 03-08-2019 | #11 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 9
|
Профиль | Сайт | Отправить PM | Цитировать Скрытый текст
![]() Что-то не так сделал? Скрытый текст
![]() |
Последний раз редактировалось zerdox@vk, 03-08-2019 в 09:47. Причина: добавил спойлеры Отправлено: 09:45, 03-08-2019 | #12 |
Crazy Сообщения: 1235
|
Профиль | Отправить PM | Цитировать Цитата zerdox@vk:
Цитата YuS_2:
кроме того, в переменной %project_name% у Вас в наличии только имя каталога и в итоге, путь получается относительным. Сначала необходимо привести его к абсолютному и потом подставлять в строку запуска скрипта. Примерно так: |
||
------- Отправлено: 11:17, 03-08-2019 | #13 |
Новый участник Сообщения: 9
|
Профиль | Сайт | Отправить PM | Цитировать Цитата YuS_2:
|
|
Отправлено: 14:47, 03-08-2019 | #14 |
Crazy Сообщения: 1235
|
Профиль | Отправить PM | Цитировать Цитата zerdox@vk:
По Вашим скринам это можно увидеть: Если скрипт лежит у Вас в каталоге: а на момент запуска, текущим является: то при попытке запуска скрипта из этого каталога: естественно, powershell его не увидит, но увидит в родительском от текущего: В общем, как я и написал выше: Цитата YuS_2:
|
||
------- Отправлено: 15:02, 03-08-2019 | #15 |
Новый участник Сообщения: 9
|
Профиль | Сайт | Отправить PM | Цитировать В общем разобрался, вот результаты:
Вывод консоли
C:\Users\1234\Desktop\projects>git clone https://github.com/ZerdoX-x/project.git Cloning into 'project'... remote: Enumerating objects: 15468, done. remote: Counting objects: 100% (15468/15468), done. remote: Compressing objects: 100% (10696/10696), done. remote: Total 15468 (delta 4201), reused 15463 (delta 4196), pack-reused 0 Receiving objects: 100% (15468/15468), 16.17 MiB | 6.92 MiB/s, done. Resolving deltas: 100% (4201/4201), done. C:\Users\1234\Desktop\projects>set /P project_name="Project Name is - " Project Name is - test C:\Users\1234\Desktop\projects>Powershell.exe -executionpolicy remotesigned -File script.ps1 Sections: a b c d Каталог: C:\Users\1234\Desktop\projects\project\src\template Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 03.08.2019 17:22 71 a.html -a---- 03.08.2019 17:22 71 b.html -a---- 03.08.2019 17:22 71 c.html -a---- 03.08.2019 17:22 71 d.html Каталог: C:\Users\1234\Desktop\projects\project\src\styles\sections Mode LastWriteTime Length Name ---- ------------- ------ ---- -a---- 03.08.2019 17:22 6 a.sass -a---- 03.08.2019 17:22 6 b.sass -a---- 03.08.2019 17:22 6 c.sass -a---- 03.08.2019 17:22 6 d.sass C:\Users\1234\Desktop\projects>ren "project" "test" C:\Users\1234\Desktop\projects>ren *.psd "test".psd Не удается найти указанный файл. C:\Users\1234\Desktop\projects>move *.psd "test\psd" Файл с таким именем уже существует или не найден. C:\Users\1234\Desktop\projects>cd test C:\Users\1234\Desktop\projects\test>rd /S /Q .git C:\Users\1234\Desktop\projects\test>del /F /Q psd\.gitkeep.txt src\fonts\.gitkeep.txt src\img\.gitkeep.txt C:\Users\1234\Desktop\projects\test>powershell -Command "(gc .\src\index.html) -replace '<title>Title</title>', '<title>test</title>' | Out-File -encoding ASCII index.html" C:\Users\1234\Desktop\projects\test>Choice /M "Download jQuery?" Download jQuery? [Y,N]?Y C:\Users\1234\Desktop\projects\test>If Errorlevel 2 Goto No C:\Users\1234\Desktop\projects\test>If Errorlevel 1 Goto Yes C:\Users\1234\Desktop\projects\test>call npm i jquery --save-dev > node-sass@4.12.0 install C:\Users\1234\Desktop\projects\test\node_modules\node-sass > node scripts/install.js Cached binary found at C:\Users\1234\AppData\Roaming\npm-cache\node-sass\4.12.0\win32-x64-72_binding.node > node-sass@4.12.0 postinstall C:\Users\1234\Desktop\projects\test\node_modules\node-sass > node scripts/build.js Binary found at C:\Users\1234\Desktop\projects\test\node_modules\node-sass\vendor\win32-x64-72\binding.node Testing binary Binary is fine > gifsicle@4.0.1 postinstall C:\Users\1234\Desktop\projects\test\node_modules\gifsicle > node lib/install.js √ gifsicle pre-build test passed successfully > jpegtran-bin@4.0.0 postinstall C:\Users\1234\Desktop\projects\test\node_modules\jpegtran-bin > node lib/install.js √ jpegtran pre-build test passed successfully > optipng-bin@5.1.0 postinstall C:\Users\1234\Desktop\projects\test\node_modules\optipng-bin > node lib/install.js √ optipng pre-build test passed successfully npm WARN activebox@1.0.0 No description npm WARN activebox@1.0.0 No repository field. npm WARN optional SKIPPING OPTIONAL DEPENDENCY: fsevents@1.2.9 (node_modules\fsevents): npm WARN notsup SKIPPING OPTIONAL DEPENDENCY: Unsupported platform for fsevents@1.2.9: wanted {"os":"darwin","arch":"any"} (current: {"os":"win32","arch":"x64"}) + jquery@3.4.1 added 935 packages from 623 contributors and audited 14350 packages in 59.608s found 0 vulnerabilities Код start_project.bat
git clone https://github.com/ZerdoX-x/project.git set /P project_name="Project Name is - " Powershell.exe -executionpolicy remotesigned -File script.ps1 ren "project" "%project_name%" ren *.psd "%project_name%".psd move *.psd "%project_name%\psd" cd %project_name% rd /S /Q .git del /F /Q psd\.gitkeep.txt src\fonts\.gitkeep.txt src\img\.gitkeep.txt powershell -Command "(gc .\src\index.html) -replace '<title>Title</title>', '<title>%project_name%</title>' | Out-File -encoding ASCII index.html" Choice /M "Download jQuery?" If Errorlevel 2 Goto No If Errorlevel 1 Goto Yes Goto End :No call npm i Goto End :Yes call npm i jquery --save-dev cd src\js\ echo //= ../../node_modules/jquery/dist/jquery.min.js > script.js cd ..\..\ :End code . Код script.ps1
param( [string]$html_path = 'project\src\template\', [string]$sass_path = 'project\src\styles\sections\', [string]$html = ".html", [string]$sass = ".sass" ) if (!(test-path $html_path)){ write-host Такого пути не существует. Создаем каталог $html_path -for red mkdir $html_path|out-null } if (!(test-path $sass_path)){ write-host Такого пути не существует. Создаем каталог $sass_path -for red mkdir $sass_path|out-null } $sections = read-host "Sections" [array]$sections = $sections.split() $sections|ForEach-Object{New-Item -p $html_path -n ("$_"+$html) -it 'file' -v @" <section id="$_"> <div class="content"> </div> </section> "@ } $sections|ForEach-Object{New-Item -p $sass_path -n ("$_"+$sass) -it 'file' -v @" #$_ "@ } Все работает, как и ожидалось. Единственное - консоль сама не закрывается, все равно приходится после открытия vscode закрывать окно консоли вручную, нашел решение, но для меня оно к сожалению не сработало, заменив строку на получаю ошибку 'отказано в доступе': Скрытый текст
![]() У exe'шника стоят все разрешения и у корневой папки тоже. Пробовал запускать bat с правами администратора, или через cmd (тоже с правами администратора) - результат один. Тут скорее всего проблема в настройках винды, а не в программе которую я пытаюсь запустить. Возможно есть идеи? |
Отправлено: 15:35, 03-08-2019 | #16 |
Crazy Сообщения: 1235
|
Профиль | Отправить PM | Цитировать Цитата zerdox@vk:
![]() Code.exe и Сode.exe - это два разных файла, если что. |
|
------- Отправлено: 15:49, 03-08-2019 | #17 |
Новый участник Сообщения: 9
|
Профиль | Сайт | Отправить PM | Цитировать Цитата YuS_2:
Еще смущает что в консоли а не как я прописал.. Или это нормально, раз вы ничего не сказали по этому поводу? Могу лишь догадываться что проблема снова в кодировке. Я готов пожертвовать первой строчкой и вставить туда какой-нибудь символ, если oem 866 уже не подходит) |
|
Отправлено: 16:12, 03-08-2019 | #18 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Цитата zerdox@vk:
Цитата zerdox@vk:
|
||
Отправлено: 17:23, 03-08-2019 | #19 |
Новый участник Сообщения: 9
|
Профиль | Сайт | Отправить PM | Цитировать Цитата Iska:
В общем это тот же самый "code ." но с прямым путем до файла. Странно, как редактор кода понимает то, что ему передали через консоль? Это как-то предусмотрено в самой программе? У меня были мысли просто так-же запустить exe через старт и после пути к приложению добавить точку как аргумент который принимается за путь (точно так же как в команде "code .") но я посчитал это глупой идеей. Да и в любом случае я бы не догадался до "пустых" кавычек перед путем, фиг его знает что это означает, в комментарии кстати писали на stackoverflow что именно эта часть была упущением у кого-то. Цитата Iska:
В общем это тот же самый "code ." но с прямым путем до файла. Странно, как редактор кода понимает то, что ему передали через консоль? Это как-то предусмотрено в самой программе? У меня были мысли просто так-же запустить exe через старт и после пути к приложению добавить точку как аргумент который принимается за путь (точно так же как в команде "code .") но я посчитал это глупой идеей. Да и в любом случае я бы не догадался до "пустых" кавычек перед путем, фиг его знает что это означает, в комментарии кстати писали на stackoverflow что именно эта часть была упущением у кого-то. |
||
Отправлено: 17:43, 03-08-2019 | #20 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Присвоить переменным значения имен файлов в папке | kopbetby | Скриптовые языки администрирования Windows | 5 | 10-10-2016 14:26 | |
Прочее - Разбить архив на части | venuko | Общий по Linux | 12 | 30-06-2015 09:38 | |
VBS/WSH/JS - поиск слова в тексте и вывод части текста после искомого слова | sergey23031978 | Скриптовые языки администрирования Windows | 9 | 18-02-2015 16:54 | |
Как разбить страницу на части? | alturgrey | Вебмастеру | 13 | 09-08-2010 16:29 | |
[решено] Разбить mp3 на части | samurai | Видео и аудио: обработка и кодирование | 3 | 08-01-2009 12:10 |
|