![]() |
Нужны 3 куска кода, которые можно было применять в разным местах в 1-ом BAT-файле.
Нужны 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-файла нежелательны |
KOD65001, Не понятно:
1. СОХРАНИТЬ В ПЕРЕМЕННУЮ "param" ИМЯ TXT-файла - откуда его брать? так как имя файла может быть всегда разным!
2. Переименовать этот TXT-файл в "12345.txt" - именно в это имя, или его тоже надо откуда-то взять? Код:
@Echo Off |
Спасибо megaloman! :) Прошу прощения за то что сразу не написал, необходимо чтобы имя бралось не только у текстового файла, а у любого типа файла и с разным расширением. Имя файла берется из пути C:\1\111\*.* В код который написали я добавил еще и кодировку и все стало нормально отображаться. Только как сделать чтобы в переменную "param" бралось имя любого типа файла лежащего в пути C:\1\111\*.* ?
@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 Цитата:
|
простите меня :) плохо объяснять умею...
Основные действия: 1. Автоматическое определение имени и расширения файла лежащего в C:\1\111\*.* и присваивание имени файла в переменную "param" (без необходимости изменять в ручную имя и расширение) 2. Просто переименовываем файл лежащий в C:\1\111\*.* в имя "12345" без изменения расширения у файла. "12345" - нигде не берется, просто переименовываем 3. Вернуть обратно имя файлу, которое было в самом начале |
KOD65001, Не понимаю, зачем нужна именно переменная %param%. Чтобы автоматически определить имена+расширение файлов в папке придётся использовать For с последующими трудностями работы с этой переменной.
Пример с %param%
Код:
@Echo Off Гораздо проще непосредственно использовать переменную цикла
Код:
@Echo Off |
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 как? |
KOD65001, вообще-то, здесь, как и на многих других форумах, принято правило «Одна проблема — одна тема», а не «Один пользователь — одна тема».
|
Код:
|
Вложений: 1
Цитата:
там нет простой возможности поменять ее расположение если Цитата:
например у меня их: Файл 161885 |
Iska, KOD65001, Исправил предыдущий пост, спасибо Iska
|
Спасибо alpap! за информацию - "тем более папок "Temp" не одна по компьютеру не считая и созданные в любом месте", обязательно это учту :)
|
Время: 13:52. |
Время: 13:52.
© OSzone.net 2001-