|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » CMD/BAT - [решено] Нужны 3 куска кода, которые можно было применять в разным местах в 1-ом BAT-файле. |
|
|
CMD/BAT - [решено] Нужны 3 куска кода, которые можно было применять в разным местах в 1-ом BAT-файле.
|
Новый участник Сообщения: 27 |
Нужны 3 куска кода, которые можно было применять в разным местах в 1-ом BAT-файле.
Есть код BAT: set /p param=<"4455.txt" - ЧИТАЕТ ПЕРВУЮ СТРОКУ В TXT-файле echo %param% | msg * - ВЫВОД ЗНАЧЕНИЯ ПЕРЕМЕННОЙ "param" Задача: 1) Вместо СТРОКИ нужно СОХРАНИТЬ В ПЕРЕМЕННУЮ "param" ИМЯ TXT-файла (чтобы во время выполнения bat выводилось "4455" - это имя только для примера) P.S. ВАЖНО чтобы в переменной сохранялись и выводились не только цифры, но и русские, английские буквы, символы Sv!F^@&$...например имя "СпаСиБо!SvF^@&$" так как имя файла может быть всегда разным! 2) Переименовать этот TXT-файл в "12345.txt" 3) Вернуть обратно имя TXT-файла (переименовать с 12345.txt на "4455.txt") используя переменную "param" Нужно сделать эти действия в BAT-файле! Понимаю, что есть другие способы сделать те же действия, но хотел бы использовать только код BAT, поэтому PowerShell или дополнительные утилиты, программы для BAT-файла нежелательны |
|
Отправлено: 17:23, 01-07-2020 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать KOD65001, Не понятно:
1. СОХРАНИТЬ В ПЕРЕМЕННУЮ "param" ИМЯ TXT-файла - откуда его брать? так как имя файла может быть всегда разным!
2. Переименовать этот TXT-файл в "12345.txt" - именно в это имя, или его тоже надо откуда-то взять? |
------- Отправлено: 18:18, 01-07-2020 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать Спасибо megaloman!
![]() @Echo Off cls chcp 1251 Set "param=СпаСиБо!SvF^@&$.txt" chcp 866 >NUL chcp 1251 dir "%param%" chcp 866 >NUL pause chcp 1251 >NUL msg * "%param%" chcp 866 >NUL pause chcp 1251 >NUL Ren "%param%" "12345.txt" chcp 866 >NUL chcp 1251 >NUL dir "12345.txt" chcp 866 >NUL pause chcp 1251 >NUL Ren "12345.txt" "%param%" chcp 866 >NUL chcp 1251 >NUL dir "%param%" chcp 866 >NUL pause Exit /B Цитата megaloman:
![]() |
|
Отправлено: 21:44, 01-07-2020 | #3 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать простите меня
![]() Основные действия: 1. Автоматическое определение имени и расширения файла лежащего в C:\1\111\*.* и присваивание имени файла в переменную "param" (без необходимости изменять в ручную имя и расширение) 2. Просто переименовываем файл лежащий в C:\1\111\*.* в имя "12345" без изменения расширения у файла. "12345" - нигде не берется, просто переименовываем 3. Вернуть обратно имя файлу, которое было в самом начале |
Отправлено: 22:29, 01-07-2020 | #4 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать KOD65001, Не понимаю, зачем нужна именно переменная %param%. Чтобы автоматически определить имена+расширение файлов в папке придётся использовать For с последующими трудностями работы с этой переменной.
Пример с %param%
@Echo Off cls Set "BoxIn=Z:\Soft_In" Set "Mask=*.*" Set "NewName=12345" FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D`) DO ( Set "param=%%f" Call msg * "%%param%%" Echo 1 ---------------- Call Dir "%BoxIn%\%%param%%" Pause Call Ren "%BoxIn%\%%param%%" "%NewName%%%~xf" Echo 2 ---------------- Dir "%BoxIn%\%NewName%%%~xf" Pause Call Ren "%BoxIn%\%NewName%%%~xf" "%%param%%"" Echo 3 ---------------- Call Dir "%BoxIn%\%%param%%" Pause ) Exit /B Гораздо проще непосредственно использовать переменную цикла
@Echo Off cls Set "BoxIn=Z:\Soft_In" Set "Mask=*.*" Set "NewName=12345" FOR /F "usebackq delims=" %%f IN (`2^>nul Dir "%BoxIn%\%Mask%" /B /A:-D`) DO ( msg * "%%f" Echo 1 ---------------- Dir "%BoxIn%\%%f" Pause Ren "%BoxIn%\%%f" "%NewName%%%~xf" Echo 2 ---------------- Dir "%BoxIn%\%NewName%%%~xf" Pause Ren "%BoxIn%\%NewName%%%~xf" "%%f" Echo 3 ---------------- Dir "%BoxIn%\%%f" Pause ) Exit /B |
|
------- Отправлено: 23:30, 01-07-2020 | #5 |
Новый участник Сообщения: 27
|
Профиль | Отправить PM | Цитировать megaloman огромное спасибо! переменная %param% была нужна для того, чтобы передать ее значения в vbs скрипт. Как и сказали переменную цикла действительно лучше использовать. Наверно это уже не по теме, но хотел спросить. А как в VBS файле прописать путь до текстового файла "ca.txt" который будет лежать в папке "Temp" независимо где находится сама папка "Temp" у пользователя т.е. чтобы эта папка определялась автоматически как у bat..типа такого: %TEMP%\ca.txt Тоже самое надо как то прописать %TEMP% и в vbs но не знаю как. На данный момент в VBS скрипте стоит "КОНКРЕТНЫЙ ПУТЬ"...
Вот это: objStream.LoadFromFile("C:\Users\User\AppData\Local\Temp\ca.txt") У пользователя эта папка может быть в любом другом месте, например "C:\Temp\". В BAT для этого нужно поставить %TEMP%\ , а в VBS как? |
Отправлено: 00:08, 03-07-2020 | #6 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать KOD65001, вообще-то, здесь, как и на многих других форумах, принято правило «Одна проблема — одна тема», а не «Один пользователь — одна тема».
|
Отправлено: 01:07, 03-07-2020 | #7 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать |
------- Последний раз редактировалось megaloman, 03-07-2020 в 19:48. Причина: Исправил после поста Iska Отправлено: 16:00, 03-07-2020 | #8 |
Ветеран Сообщения: 1274
|
Профиль | Отправить PM | Цитировать Цитата KOD65001:
там нет простой возможности поменять ее расположение если Цитата KOD65001:
например у меня их: 1.jpg |
||
Отправлено: 18:09, 03-07-2020 | #9 |
Ветеран Сообщения: 2728
|
Профиль | Отправить PM | Цитировать Iska, KOD65001, Исправил предыдущий пост, спасибо Iska
|
------- Отправлено: 19:49, 03-07-2020 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
CMD/BAT - [решено] Можно ли с помощю (.bat) кода узнать MD5 файла? | turbolover | Скриптовые языки администрирования Windows | 19 | 18-10-2018 19:30 | |
Доступ - Возможно ли объединить в домашнюю сеть пк которые подключены к разным роутерам? | Михайло | Сетевые технологии | 21 | 31-05-2017 12:32 | |
CMD/BAT - [решено] сохранение параметра в config.cfg и потом чтоб его можно было применять в других бат | vlad_exe@vk | Скриптовые языки администрирования Windows | 6 | 02-04-2016 18:49 | |
CMD/BAT - [решено] Можно ли с помощью (.bat) кода узнать серийный номер материнской платы компьютера | turbolover | Скриптовые языки администрирования Windows | 12 | 29-07-2015 16:47 | |
CMD/BAT - [решено] Как сдедать выполнение команды только после выполнения куска кода? | Ingolder | Скриптовые языки администрирования Windows | 8 | 01-09-2010 22:52 |
|