Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.56/9: Рейтинг темы: голосов - 9, средняя оценка - 4.56
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
1

Y разобраться с утилитой для CMD FileToSave

28.07.2019, 15:29. Показов 1824. Ответов 18
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Есть две утилиты FileToOpen.exe и FileToSave.exe из набора wfile. С FileToOpen.exe разобрался, открыть получается, путь получить тоже получается. А вот с FileToSave.exe разобраться не получается. Нужен пример как сохранить текстовый файл результат.
Вот мой cmd. Он вытягивает имя компьютера из реестра, создает рядом с собой файл text.txt и записывает туда.
Windows Batch file
1
2
chcp 1251
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\system\ControlSet001\Control\ComputerName\ComputerName"^|Find /I "ComputerName"`) Do >>text.txt Echo;%%J
Мне нужно чтобы появлялось диалоговое окно с выбором и задавался вопрос: куда сохранить text.txt.
Вот единственный пример работы FileToSave
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
@prompt $
@echo on
FileToSave "set fname=" ".\*.txt" "Select target file" "Blah.txt" /overwritePrompt > %temp%\temp.cmd
@echo off
echo.
echo Errorlevel: %errorlevel%
if errorlevel 1 goto :end
 
call %temp%\temp.cmd
echo.
echo Fname=%fname%
echo.
 
:end
pause
Он предлагает сохранить, но файл сохранения не создается.
0
Лучшие ответы (1)
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
28.07.2019, 15:29
Ответы с готовыми решениями:

Разобраться с утилитой ipconfig /all
Всем доброго времени суток. Нужно разобраться с утилитой ipconfig Растолкуйте пожалуйста каждую...

Не могу разобраться с кодировкой скрипта в cmd.exe
Доброй ночи! Никак не могу совладать с кодировкой php скрипта при запуске через консоль windows....

Скрипт для управления утилитой adb
Ребят, опытные волки, помогите ламеру. нужен батник выполняющий определенную команду через adb...

Как написать cmd создающий другой cmd
Добрый день. Смысл в том, чтобы создать CMD с настройками текущего ПК: имя компьютера и имя...

18
6325 / 2752 / 1070
Регистрация: 06.06.2017
Сообщений: 9,350
28.07.2019, 18:22 2
Windows Batch file
1
2
3
@echo off&chcp 1251>nul
for /f "tokens=2 delims=|" %%i in ('2^<^&1 FileToSave "<|".\*.txt"" " Сохранить как" "ComputerName.txt" /overwritePrompt') do if errorlevel 0 set "f=%%~i"
if defined f 1<&2 >%f% echo %ComputerName%
Но проще так:
Windows Batch file
1
2
@chcp 1251>nul
@for /f "delims= eol=" %%i in ('2^<^&1 savefiledialog " Сохранить как" "%cd%\ComputerName.txt" "Txt Files (*.txt)"') do @echo %ComputerName%>%%i
Вложения
Тип файла: 7z savefiledialog.7z (15.5 Кб, 3 просмотров)
0
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
28.07.2019, 19:38  [ТС] 3
Спасибо большое все работает! Но не могу разобраться. Можете пояснить?
Можно ли в моем случае
chcp 1251
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\system\ControlSet001\Control\ComputerName\ComputerName"^|Fin d /I "ComputerName"`) Do >>text.txt Echo;%%J
Писать данные не в файл text.txt, а в переменную, а в здесь
@chcp 1251>nul
@for /f "delims= eol=" %%i in ('2^<^&1 savefiledialog " Сохранить как" "%cd%\ComputerName.txt" "Txt Files (*.txt)"') do @echo %ComputerName%>%%i
брать данные из этой переменной и сохранять. Или можно как то чтобы данные брались из готового файла text.txt и выдавался диалог сохранения. Помогите разобраться, я не силен в этом, разбираюсь только немного
0
6325 / 2752 / 1070
Регистрация: 06.06.2017
Сообщений: 9,350
28.07.2019, 19:55 4
Цитата Сообщение от mat86 Посмотреть сообщение
Можно ли в моем случае
А зачем в реестр лезть, если и так есть переменная среды ComputerName?
Цитата Сообщение от mat86 Посмотреть сообщение
а в переменную
Ну, в первом случае и так есть занесение пути в переменную %f%, далее в 3-й строке имя машины выводится в заданный файл, возвращённый из этой переменной.
Во втором примере после do можно работать с переменной %%i.
0
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
28.07.2019, 21:18  [ТС] 5
А зачем в реестр лезть, если и так есть переменная среды ComputerName?
мой полный скрипт подключает файл реестра и вытягивает из него разную информацию.
далее в 3-й строке имя машины выводится в заданный файл
, а где здесь третья строка, здесь же все в одну строку?
@chcp 1251>nul
@for /f "delims= eol=" %%i in
это вытягивается имя пк и записывается в переменную %%i ?
do @echo %ComputerName%>%%i
а здесь пишутся данные из %%i в файл %ComputerName% ?
0
6325 / 2752 / 1070
Регистрация: 06.06.2017
Сообщений: 9,350
28.07.2019, 21:25 6
Цитата Сообщение от mat86 Посмотреть сообщение
мой полный скрипт подключает файл реестра и вытягивает из него разную информацию.
Ну, так разная информация может по-разному вытягиваться.

Цитата Сообщение от mat86 Посмотреть сообщение
а где здесь третья строка, здесь же все в одну строку?
Вы читате, что я пишу?:
Цитата Сообщение от FlasherX Посмотреть сообщение
в первом случае
А вы приводите кусок из второго.

Цитата Сообщение от mat86 Посмотреть сообщение
а здесь пишутся данные из %%i в файл %ComputerName% ?
Внимательней:
Цитата Сообщение от FlasherX Посмотреть сообщение
имя машины (%ComputerName%) выводится в заданный файл, возвращённый из этой (%f%) переменной.
0
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
28.07.2019, 23:36  [ТС] 7
А вы приводите кусок из второго.
, понял, из первого примера.
Не как не могу разобраться, а возможно сделать что то универсальное. Типа:
"взять данные из файла D:\1\text.txt что то типа
FOR /f "usebackq delims=" %%a IN ("D:\1\text.txt") Do >>
и направить на сохранение как то так
('2^<^&1 FileToSave "<|".\*.txt"" " Сохранить как" "ComputerName.txt" /overwritePrompt') do if errorlevel 0 set "f=%%~i"
if defined f 1<&2 >%f% echo %ComputerName%
0
6325 / 2752 / 1070
Регистрация: 06.06.2017
Сообщений: 9,350
29.07.2019, 08:31 8
Цитата Сообщение от mat86 Посмотреть сообщение
а возможно сделать что то универсальное. Типа:
"взять данные из файла
1. if defined f type D:\1\text.txt>%f%
2. do type D:\1\text.txt>%%i
Но в ТЗ вы писали о реестре, а не файле. Определитесь.
0
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
29.07.2019, 10:14  [ТС] 9
Я имею ввиду что я своим скриптом вытягиваю информацию из реестра и создаю готовый файл text.txt рядом. А ваш скрипт берет этот файл и предлагает его пересохранить, это возможно?
0
6325 / 2752 / 1070
Регистрация: 06.06.2017
Сообщений: 9,350
29.07.2019, 10:27 10
Командный сценарий — не скрипт. Я предложил два. Что возможно? И что не так на данный момент?
0
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
29.07.2019, 10:55  [ТС] 11
Не знаю как правильно объяснить.
Вот мой скрипт или командный сценарий, я не знаю как правильно.
Windows Batch file
1
2
chcp 1251
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\system\ControlSet001\Control\ComputerName\ComputerName"^|Find /I "ComputerName"`) Do >>text.txt Echo;%%J
Он сохраняет данные в файл text.txt
Вы можете написать другой командный сценарий который возьмет text.txt и выдаст диалоговое окно с сохранением этого же файла text.txt, с использованием FileToSave или savefiledialog ?

Или так. Вот ваш скрипт который берет имя пк из реестра (или из другого места) и выводит диалоговое окно с сохранением.
Windows Batch file
1
2
3
@echo off&chcp 1251>nul
for /f "tokens=2 delims=|" %%i in ('2^<^&1 FileToSave "<|".\*.txt"" " Сохранить как" "ComputerName.txt" /overwritePrompt') do if errorlevel 0 set "f=%%~i"
if defined f 1<&2 >%f% echo %ComputerName%
Можете сделать чтобы он брал информацию не из реестра, а из файла text.txt, который лежит рядом с собой?
0
6325 / 2752 / 1070
Регистрация: 06.06.2017
Сообщений: 9,350
29.07.2019, 10:59 12
Что мешает заменить ComputerName.txt на text.txt в моих кодах?
Цитата Сообщение от mat86 Посмотреть сообщение
Можете сделать чтобы он брал информацию не из реестра, а из файла text.txt, который лежит рядом с собой?
Я и так показал выше соотв. куски для кодов. Если надо рядом, то убирайте D:\1\ из полного имени.
0
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
29.07.2019, 11:10  [ТС] 13
Я и так показал выше соотв. куски для кодов. Если надо рядом, то убирайте D:\1\ из полного имени.
Да я пытался прикрутить,
Windows Batch file
1
2
3
4
@echo off&chcp 1251>nul
if defined f type D:\1\text.txt>%f%
do type D:\1\text.txt>%%i in ('2^<^&1 FileToSave "<|".\*.txt"" " Сохранить как" "ComputerName.txt" /overwritePrompt') do if errorlevel 0 set "f=%%~i"
if defined f 1<&2 >%f% echo %ComputerName%
Но так не работает
0
6325 / 2752 / 1070
Регистрация: 06.06.2017
Сообщений: 9,350
29.07.2019, 11:29 14
Лучший ответ Сообщение было отмечено mat86 как решение

Решение

Ну, конечно. Я написал часть на замену.
Windows Batch file
1
2
@chcp 1251>nul
@for /f "delims= eol=" %%i in ('2^<^&1 savefiledialog " Сохранить как" "%cd%\ComputerName.txt" "Txt Files (*.txt)"') do type text.txt>%%i
1
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
29.07.2019, 11:57  [ТС] 15
То что надо. Огромное вам спасибо!

Добавлено через 19 минут
Можете помочь облагородить мой командный сценарий
Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
chcp 1251
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\system\ControlSet001\Control\ComputerName\ComputerName"^|Find /I "ComputerName"`) Do >>text.txt               Echo;Имя компьютера         %%J
echo ===============================================>>text.txt
 
for /f "usebackq tokens=8 delims=" %%A in (`reg query "HKLM\system\ControlSet001\services\Tcpip\Parameters\Interfaces" /se #`) do call :PROCESS "%%A"
 
@chcp 1251>nul
@for /f "delims= eol=" %%i in ('2^<^&1 savefiledialog " Сохранить как" "%cd%\Ip-адрес.txt" "Txt Files (*.txt)"') do type text.txt>%%i
 
goto :EOF
:PROCESS
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "IPAddress"`) Do >>text.txt          Echo;IP      %%J
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "SubnetMask"`) Do >>text.txt       Echo;Маска   %%J
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "DefaultGateway"`) Do >>text.txt Echo;Шлюз    %%J
For /F "UseBackQ Tokens=2*" %%I In (`Reg Query "HKEY_LOCAL_MACHINE\system\ControlSet001\services\Tcpip\Parameters\Interfaces\%~1" /v "NameServer"`) Do >>text.txt       Echo;%%J
echo :>>text.txt
echo ----------------------------------------------->>text.txt
echo :>>text.txt
goto :EOF
Выводит такой результат:
Кликните здесь для просмотра всего текста
Имя компьютера HOME-ПК
===============================================
IP 192.168.1.129
Маска 255.255.255.0
Шлюз 192.168.1.1
8.8.8.8,8.8.4.4
:
-----------------------------------------------
:
IP 192.168.234.1
Маска 255.255.255.0

:
-----------------------------------------------
:

:
-----------------------------------------------
:
:
-----------------------------------------------
:
IP 192.168.64.1
Маска 255.255.255.0

:
-----------------------------------------------
:

:
-----------------------------------------------
:
IP 192.168.56.1
Маска 255.255.255.0

:
-----------------------------------------------
:

Если добавляю слово DNS, тогда такой
Кликните здесь для просмотра всего текста
Имя компьютера HOME-ПК
===============================================
IP 192.168.1.129
Маска 255.255.255.0
Шлюз 192.168.1.1
DNS 8.8.8.8,8.8.4.4
:
-----------------------------------------------
:
IP 192.168.234.1
Маска 255.255.255.0
DNS
:
-----------------------------------------------
:
DNS
:
-----------------------------------------------
:
:
-----------------------------------------------
:
IP 192.168.64.1
Маска 255.255.255.0
DNS
:
-----------------------------------------------
:
DNS
:
-----------------------------------------------
:
IP 192.168.56.1
Маска 255.255.255.0
DNS
:
-----------------------------------------------
:
Если убираю разделители то почти как надо
Кликните здесь для просмотра всего текста
Имя компьютера HOME-ПК
===============================================
IP 192.168.1.129
Маска 255.255.255.0
Шлюз 192.168.1.1
DNS 8.8.8.8,8.8.4.4
IP 192.168.234.1
Маска 255.255.255.0
DNS
DNS
IP 192.168.64.1
Маска 255.255.255.0
DNS
DNS
IP 192.168.56.1
Маска 255.255.255.0
DNS
Но не хватает пробелов после DNS и слово DNS если значение пусто то лишнее
0
6325 / 2752 / 1070
Регистрация: 06.06.2017
Сообщений: 9,350
29.07.2019, 12:17 16
Пожалуйста. Но для оценок постов есть спецкнопки под ними.
А облагораживание вашего кода уже по сути за рамками сабжа.
1
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
29.07.2019, 12:38  [ТС] 17
Да, увидел, еще раз огромное спасибо. Задача решена.

Добавлено через 3 минуты
Поможете еще облагородить? Что нужно создать отдельную тему? Я не нашел где отправляются ЛС
0
6325 / 2752 / 1070
Регистрация: 06.06.2017
Сообщений: 9,350
29.07.2019, 13:55 18
Конечно, отдельную. К ЛС доспуп получите завтра. Читайте.
0
0 / 0 / 0
Регистрация: 28.07.2019
Сообщений: 23
29.07.2019, 20:17  [ТС] 19
Создал отдельную тему, если что то не правильно удалите я пересоздам, у мня страницы на форуме как то не правильно стали отображаться, пробовал в двух браузерах облагородить мой командный сценарий
0
29.07.2019, 20:17
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
29.07.2019, 20:17
Помогаю со студенческими работами здесь

Восстановление значений cmd [cmd, ooov.net]
Здравствуйте, Столкнулся с такой проблемой, при запуске Windows открывался cmd и осуществлялся...

Флэшка с утилитой
Приветствую всех! У меня такой вопрос,имею флэшку с утилитой Victoria ,уже с архиватором...

Клонирование HDD утилитой dd
Приветствую. Есть винт А объёмом 250 GB и винт Б объёмом 500GB. На винта А установлена система....

Разгон утилитой от Intel
В этом видео тест утилиты для автоматического разгона процессоров Core 9-го поколения Intel...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
19
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru