Форум программистов, компьютерный форум, киберфорум
Наши страницы
PowerShell
Войти
Регистрация
Восстановить пароль
 
f1r3man
0 / 0 / 0
Регистрация: 01.11.2016
Сообщений: 7
1

Перевод BAT to PS

17.07.2019, 16:07. Просмотров 248. Ответов 1

Доброго времени суток!

Подскажите, можно ли этот код с Batch перевести на PS 2.0?.
Особенно интересен блок кода, где считывается файл конфигурации.

Windows Batch file
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
@echo off
SetLocal EnableExtensions
::Ввод переменных (аля постоянных)
set cfg=config.ini
set log=%COMPUTERNAME:~4,6%-%date%-report
set fld=c:\distribs\tec
set curl=c:\distribs\tec\curl
set iperf=c:\distribs\tec\iperf
set logs=c:\distribs\tec\logs
set wordpad="c:\Program Files\Windows NT\Accessories\wordpad.exe"
 
if exist %logs%\%log%.log (
set log=%log%-%time:~0,2%
)
Echo \\ %time:~0,8% в–* Запуск программы
::Проверка наличия папок, создание в случае отсутствия.
if not exist %iperf% (
mkdir %iperf%
Echo Created folder %iperf%
)
if not exist %curl% (
mkdir %curl%
Echo Created folder %curl%
)
if not exist %logs% (
mkdir %logs%
Echo Created folder %logs%
)
Echo \\ %time:~0,8% в–* Проверка каталогов программы завершена.
::Копирование всех модулей и компонентов в рабочие папки
if not exist C:\Windows\tcping.exe (
copy /Y "tcping.exe " "C:\Windows\tcping.exe"
Echo Copy file tcping.exe
)
if not exist %fld%\step1.bat (
copy /Y "step1.bat " "%fld%\step1.bat"
Echo Copy file step1.bat 
)
if not exist %fld%\step2.bat (
copy /Y "step2.bat " "%fld%\step2.bat"
Echo Copy file step2.bat 
)
if not exist %fld%\step3.bat (
copy /Y "step3.bat " "%fld%\step3.bat"
Echo Copy file step3.bat 
)
if not exist %fld%\step4.bat (
copy /Y "step4.bat " "%fld%\step4.bat"
Echo Copy file step4.bat 
)
if not exist %iperf%\iperf3.exe (
copy /Y "iperf\iperf3.exe" "%iperf%\iperf3.exe"
Echo Copy file iperf3.exe.
)
if not exist %iperf%\cygwin1.dll (
copy /Y "iperf\cygwin1.dll" "%iperf%\cygwin1.dll"
Echo Copy file cygwin1.dll.
)
if not exist %iperf%\cyggcc_s-1.dll (
copy /Y "iperf\cyggcc_s-1.dll" "%iperf%\cyggcc_s-1.dll"
Echo Copy file cyggcc_s-1.dll.
)
if not exist %curl%\curl.exe (
copy /Y "curl\curl.exe" "%curl%\curl.exe"
Echo Copy file curl.exe.
)
if not exist %curl%\libcurl.dll (
copy /Y "curl\libcurl.dll" "%curl%\libcurl.dll"
Echo Copy file libcurl.dll.
)
if not exist %curl%\libeay32.dll (
copy /Y "curl\libeay32.dll" "%curl%\libeay32.dll"
Echo Copy file libeay32.dll.
)
if not exist %curl%\libssl32.dll (
copy /Y "curl\libssl32.dll" "%curl%\libssl32.dll"
Echo Copy file libssl32.dll.
)
Echo \\ %time:~0,8% в–* Проверка компонентов программы завершена.
::Считывание файла конфигурации
For /F "UseBackQ tokens=1-2 delims==( " %%a in ("%cfg%") do if "%%a"=="1DNS" set dns1=%%b
For /F "UseBackQ tokens=1-2 delims==( " %%a in ("%cfg%") do if "%%a"=="2DNS" set dns2=%%b
For /F "UseBackQ tokens=1-2 delims==( " %%a in ("%cfg%") do if "%%a"=="3DNS" set dns3=%%b
For /F "UseBackQ tokens=1-2 delims==( " %%a in ("%cfg%") do if "%%a"=="4DNS" set dns4=%%b
For /F "UseBackQ tokens=1-2 delims==( " %%a in ("%cfg%") do if "%%a"=="FTP" set ftp-path=%%b
For /F "UseBackQ tokens=1-2 delims==( " %%a in ("%cfg%") do if "%%a"=="LOGIN" set login=%%b
For /F "UseBackQ tokens=1-2 delims==( " %%a in ("%cfg%") do if "%%a"=="PASS" set pass=%%b
For /F "UseBackQ tokens=1-2 delims==( " %%a in ("%cfg%") do if "%%a"=="MODE" set mode=%%b
Echo \\ %time:~0,8% в–* Считывание конфигурации программы завершено.
if %mode%==1 ( 
Echo \\ %time:~0,8% в–* Загружен %mode% режим конфигурации.
Echo \\ %time:~0,8% в–* Полное тестирование.
GOTO MODE1
)
if %mode%==2 ( 
Echo \\ %time:~0,8% в–* Загружен %mode% режим конфигурации.
Echo \\ %time:~0,8% в–* Облегченное тестирование канала, без tracert.
GOTO MODE2
)
if %mode%==3 ( 
Echo \\ %time:~0,8% в–* Загружен %mode% ручной режим конфигурации.
Echo \\ %time:~0,8% в–* После завершения всех тестов, будет выведен лог-файл.
GOTO MODE3
)
if %mode%==0 (
Echo \\ %time:~0,8% в–* Выбран режим конфигурации = %mode%
Echo \\ %time:~0,8% в–* Программа завершает свою работу.
set ERRORLEVEL=1
GOTO ERROR
) ELSE (
Echo \\ %time:~0,8% в–* Не выбран режим конфигурации программы.
Echo \\ %time:~0,8% в–* Программа завершает свою работу.
set ERRORLEVEL=2
GOTO ERROR
)  
::Выполнение набора команд, в зависимости от выбранного режима.
:MODE1
Echo \\ %time:~0,8% в–* Выполнение 1 этапа тестирования.
cmd /c %fld%\step1.bat > %logs%\%log%.log
chcp 866>nul
Echo \\ %time:~0,8% в–* 1 этап тестирования завершен успешно.
Echo \\ %time:~0,8% в–* Выполнение 2 этапа тестирования.
cmd /c %fld%\step2.bat >> %logs%\%log%.log
chcp 866>nul
Echo \\ %time:~0,8% в–* 2 этап тестирования завершен успешно.
Echo \\ %time:~0,8% в–* Выполнение 3 этапа тестирования. 
Echo \\ %time:~0,8% в–* Выполнение текущей операции может занять более 15 минут.
cmd /c %fld%\step3.bat >> %logs%\%log%.log
chcp 866>nul
Echo \\ %time:~0,8% в–* 3 этап тестирования завершен успешно.
Echo \\ %time:~0,8% в–* Выполнение 4 этапа тестирования. 
Echo \\ %time:~0,8% в–* Не закрывайте программу!
cmd /c %fld%\step4.bat >> %logs%\%log%.log
chcp 866>nul
Echo \\ %time:~0,8% в–* 4 этап тестирования завершен успешно.
echo \\ %time:~0,8% в–* Формирование отчета.
GOTO CONTINUE
:MODE2
Echo \\ %time:~0,8% в–* Выполнение 1 этапа тестирования.
cmd /c %fld%\step1.bat > %logs%\%log%.log
chcp 866>nul
Echo \\ %time:~0,8% в–* 1 этап тестирования завершен успешно.
Echo \\ %time:~0,8% в–* Выполнение 2 этапа тестирования.
cmd /c %fld%\step2.bat >> %logs%\%log%.log
chcp 866>nul
Echo \\ %time:~0,8% в–* 2 этап тестирования завершен успешно.
Echo \\ %time:~0,8% в–* Выполнение 3 этапа тестирования. 
cmd /c %fld%\step4.bat >> %logs%\%log%.log
Echo \\ %time:~0,8% в–* 3 этап тестирования завершен успешно.
echo \\ %time:~0,8% в–* Формирование отчета.
GOTO CONTINUE
:MODE3
Echo \\ %time:~0,8% в–* Выполнение 1 этапа тестирования.
cmd /c %fld%\step1.bat > %logs%\%log%.log
chcp 866>nul
Echo \\ %time:~0,8% в–* 1 этап тестирования завершен успешно.
Echo \\ %time:~0,8% в–* Выполнение 2 этапа тестирования.
cmd /c %fld%\step2.bat >> %logs%\%log%.log
chcp 866>nul
Echo \\ %time:~0,8% в–* 2 этап тестирования завершен успешно.
Echo \\ %time:~0,8% в–* Выполнение 3 этапа тестирования.
Echo \\ %time:~0,8% в–* Выполнение может занять более 10 минут.
cmd /c %fld%\step3.bat >> %logs%\%log%.log
chcp 866>nul
Echo \\ %time:~0,8% в–* 3 этап тестирования завершен успешно.
Echo \\ %time:~0,8% в–* Выполнение 4 этапа тестирования.
Echo \\ %time:~0,8% в–* Не закрывайте программу!
cmd /c %fld%\step4.bat >> %logs%\%log%.log
chcp 866>nul
Echo \\ %time:~0,8% в–* 4 этап тестирования завершен успешно.
echo \\ %time:~0,8% в–* Формирование отчета.
%wordpad% %logs%\%log%.log
exit /b
:CONTINUE
cd %curl%
if not exist %logs%\%log%.log (
Echo \\ %time:~0,8% в–* Ошибка. Отсутсвует файл логирования.
) ELSE (
curl.exe --upload-file %logs%\%log%.log --ftp-pasv %ftp-path% -u %login%:%pass% 
Echo \\ %time:~0,8% в–* Лог программы успешно выгружен на FTP ресурс.
) 
echo \\ %time:~0,8% в–* Программа завершила свою работу. 
exit /b
:ERROR
Echo \\ %time:~0,8% в–* Программа завершена с ошибкой, %ERRORLEVEL% 
exit /b %ERRORLEVEL%
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
17.07.2019, 16:07
Ответы с готовыми решениями:

В ярлыках браузеров emorhc.bat rehcnual.bat xoferif.bat erolpxei.bat
В ярлыках браузеров встроились вирусы и при открытии открывается реклама

Exe.rehcnual.bat, exe.erolpxei.bat, exe.emorhc.bat итд
добрый день! в конце мая поймала заразу, которая поставила мне кучу хлама от мыла, браузер амиго и...

Запуск файла в директории с .bat, когда .bat запущен от имени администратора
Здравствуйте. Имею бат, он должен запускать файл "<тут директория батника>\n1.bat". Но если даже...

Как создать .bat файл с рандомным именем, используя bat-ник?
Как создать .bat файл с рандомним именем (желательно Bomba_1, Bomba_2, и так далее) используя...

Один bat-файл запускает по очереди два других bat-файла
Имеются две папки в одной драйвера в второй программы решил сделать установку этого хозяйства с...

1
bidstrup
306 / 126 / 19
Регистрация: 11.03.2018
Сообщений: 572
17.07.2019, 18:01 2
Цитата Сообщение от f1r3man Посмотреть сообщение
можно ли этот код с Batch перевести на PS 2.0?.
не только можно, но и нужно, вопрос лишь в мотивации.
0
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
17.07.2019, 18:01

Создать bat-файл при помощи другого bat-файла
Добрый вечер всем форумчанам! Прошу помощи... Решил заморочиться и создать bat файл при помощи...

Как вызвать в одном bat-файле другой bat-файл?
Здравствуйте, уважаемые форумчане. Подскажите, пожалуйста, каким образом надо прописать в одном...

Можно ли получить имя bat-файла в этом же bat-файле?
Запускаю прогу со входными аргументами из батника. Последний аргумент - имя выходного файла. Хочу...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.
Рейтинг@Mail.ru