hseg0
- Стаж: 2 года 10 месяцев
- Сообщений: 3
- Репутация:0[+] [-]
|
Здравствуйте. Хотелось бы батником изменить дату создания, дату изменения папки (возможно и не только эти параметры) по определенному пути, чтобы эти изменения не затронули все подпапки и все файлы внутри. Спасибо за ответ.
|
darkalexx4
- Стаж: 9 лет 10 месяцев
- Сообщений: 175
- Репутация:7[+] [-]
- Откуда: Минск
|
Господа, приветствую. Помогите советом, ни как не могу понять почему при сохранении файла, текст в нем не читаемый. Вот код:@echo off chcp 65001 mode con:cols=120 lines=50 cls echo Просмотр информации о статусе активации Windows... set /p filename=Введите имя файла для сохранения: cscript //nologo C:\Windows\System32\slmgr.vbs /dlv > "%filename%.txt" echo Результат сохранен в файл %filename%.txt powershell -Command "(Get-Content '%filename%.txt') | Set-Content -Encoding utf8 '%filename%.txt'" pause
|
Ander_73
- Стаж: 7 лет 10 месяцев
- Сообщений: 3863
- Репутация:127[+] [-]
|
darkalexx4, действительно, лажа. UTF-16 не спасёт отца русской демократии?
|
darkalexx4
- Стаж: 9 лет 10 месяцев
- Сообщений: 175
- Репутация:7[+] [-]
- Откуда: Минск
|
Ander_73,Нет)‚ҐабЁп б«г¦Ўл «ЁжҐ§Ёа®ў Ёп Їа®Ја ¬¬®Ј® ®ЎҐбЇҐзҐЁп: 10.0.19041.2728 €¬п: Windows(R), Professional edition ЋЇЁб ЁҐ: Windows(R) Operating System, OEM_DM channel €¤ҐвЁдЁЄ в®а ЄвЁў жЁЁ: bd3762d7-270d-47фывф29ca45278a €¤ҐвЁдЁЄ в®а ЇаЁ«®¦ҐЁп: 55c92734-d682-4d71-98фывфыf16059f ђ биЁаҐл© PID: 03612-03305-088-261077-02-1049фывф Љ « Є«о祩 Їа®¤гЄв®ў: OEM:DM €¤ҐвЁдЁЄ в®а гбв ®ўЄЁ: 3914305099724243788766фвфывфывфыв15823348531120 €бЇ®«м§г©вҐ URL- ¤аҐб «ЁжҐ§ЁЁ: https://activation-v2.sls.microsoft.com/SLActivateProduct/SLActivateProduct.asmx?configextension=DM URL- ¤аҐб Їа®ўҐаЄЁ: https://validation-v2.sls.microsoft.com/SLWGA/slwga.asmx — бвЁзл© Є«оз Їа®¤гЄв : YTDGP ‘®бв®пЁҐ «ЁжҐ§ЁЁ: Ё¬ҐҐв «ЁжҐ§Ёо Ћб⠢襥бп зЁб«® ў®§ўа 饨© Є Ёб室®¬г б®бв®пЁо ЄвЁў жЁЁ Windows: 1001 Ћб⠢襥бп зЁб«® ў®§ўа в®ў Є Ёб室®¬г б®бв®пЁо ЄвЁў жЁЁ SKU: 1001 „®ўҐаҐ®Ґ ўаҐ¬п: 06.04.2023 10:47:03 Использовал такой параметр: powershell -Command "(Get-Content '%filename%.txt') | Set-Content -Encoding Unicode '%filename%.txt'" Я с кодами на не очень, пробую написать вывод информации исходя из источников в интернете!
|
Ander_73
- Стаж: 7 лет 10 месяцев
- Сообщений: 3863
- Репутация:127[+] [-]
|
darkalexx4, я имел ввиду, что выполнить конвертацию в UTF-16 гораздо проще. Ну, нет так нет.for /f "delims=" %%a in ('cscript //nologo C:\Windows\System32\slmgr.vbs /dlv') do call :test exit :test >nul chcp 65001 for %%i in (1) do >>filename.ext echo/%%a
|
darkalexx4
- Стаж: 9 лет 10 месяцев
- Сообщений: 175
- Репутация:7[+] [-]
- Откуда: Минск
|
И на том спасибо, буду дальше ковыряться)
|
sergeysvirid
- Стаж: 10 лет
- Сообщений: 2599
- Репутация:127[+] [-]
- Откуда: 65 регион (GMT+11)
|
99954 Использовал такой параметр: powershell -Command "(Get-Content '%filename%.txt') | Set-Content -Encoding Unicode '%filename%.txt'" darkalexx4, А так:powershell -Command "(Get-Content '%filename%.txt') | Set-Content -Encoding Default '%filename%.txt'"
|
darkalexx4
- Стаж: 9 лет 10 месяцев
- Сообщений: 175
- Репутация:7[+] [-]
- Откуда: Минск
|
sergeysvirid, Не проходит(
|
Ander_73
- Стаж: 7 лет 10 месяцев
- Сообщений: 3863
- Репутация:127[+] [-]
|
Я вот сейчас не понял, я же дал код вывода в UTF8. Опять всё не так?
|
darkalexx4
- Стаж: 9 лет 10 месяцев
- Сообщений: 175
- Репутация:7[+] [-]
- Откуда: Минск
|
Ander_73, Я выше писал, что не силен в кодах, куда мне поставить ваш код нужно? Если Вас не затруднит, полный код с вашими правками впишите пожалуйста!
|
darkalexx4
- Стаж: 9 лет 10 месяцев
- Сообщений: 175
- Репутация:7[+] [-]
- Откуда: Минск
|
Заработало)))))Итог@echo off set /p filename=Name: set "log_file=%filename%.txt" for /f "delims=" %%a in ('cscript //nologo C:\Windows\System32\slmgr.vbs /dlv') do call :test "%%a" goto :eof :test set "line=%~1" setlocal enabledelayedexpansion >nul chcp 65001 >>"%log_file%" echo/!line! endlocal goto :eof Спасибо всем за идеи! Немного изменил код, теперь можно самому задать имя конечному файлу!
|
JuraAD
- Стаж: 3 года 5 месяцев
- Сообщений: 86
- Репутация:27[+] [-]
|
Есть время, решил описать полезность... Часто пользуюсь не cmd shell-ом а linux... Работаю в выни дома, но нравится linux. Как совместить полезное с приятным!?... Локальный Linux shell в Windows Есть пакеты утилиток linux большого размера типа: cygwin, msys и т.п... Но есть путь проще и компактнее - busybox. busybox - пакет базовых утилит linux, собранных в едином файле "exe" (конвеер базовых утилит linux), пример справки:busybox.exe --helpBusyBox v1.36.0.git (2022-09-19 21:24:05) BusyBox is copyrighted by many authors between 1998-2022. Licensed under GPLv2. See source distribution for detailed copyright notices. Usage: busybox [function [arguments]...] or: busybox --list[-full] or: busybox --install [-s] [-u|DIR] or: busybox --uninstall [-n] file or: function [arguments]... BusyBox is a multi-call binary that combines many common Unix utilities into a single executable. The shell in this build is configured to run built-in utilities without $PATH search. You don't need to install a link to busybox for each utility. To run external program, use full path (/sbin/ip instead of ip). Currently defined functions: [, [[, ar, arch, ascii, ash, awk, base32, base64, basename, bash, bc, bunzip2, busybox, bzcat, bzip2, cal, cat, chattr, chmod, cksum, clear, cmp, comm, cp, cpio, crc32, cut, cygpath, date, dc, dd, df, diff, dirname, dos2unix, dpkg, dpkg-deb, du, echo, ed, egrep, env, expand, expr, factor, false, fgrep, find, fold, free, fsync, ftpget, ftpput, getopt, grep, groups, gunzip, gzip, hd, head, hexdump, httpd, iconv, id, inotifyd, install, ipcalc, jn, kill, killall, less, link, ln, logname, ls, lsattr, lzcat, lzma, lzop, lzopcat, man, md5sum, mkdir, mktemp, mv, nc, nl, nproc, od, paste, patch, pgrep, pidof, pipe_progress, pkill, printenv, printf, ps, pwd, readlink, realpath, reset, rev, rm, rmdir, rpm, rpm2cpio, sed, seq, sh, sha1sum, sha256sum, sha3sum, sha512sum, shred, shuf, sleep, sort, split, ssl_client, stat, strings, su, sum, sync, tac, tail, tar, tee, test, time, timeout, touch, tr, true, truncate, ts, tsort, ttysize, uname, uncompress, unexpand, uniq, unix2dos, unlink, unlzma, unlzop, unxz, unzip, uptime, usleep, uudecode, uuencode, watch, wc, wget, which, whoami, whois, xargs, xxd, xz, xzcat, yes, zcat Где взять? Можно собрать из cygwin или msys - сложная структура каталогов, больше подходит когда нужны серверы и всё такое. Нам нужен простой, базовый набор функций. Воспользуемся пакетом git-for-windows: x32, x64 Распаковать пакет нужной разрядности и забрать файл из каталога "mingw32\bin\busybox.exe", остальное можно выбросить. У меня он размещен в каталогах:B:\sys\util\linux\bash.cmd bash_.cmd bash_set.reg busybox.cmd busybox_.cmd busybox_set.reg mc\ unxutils\ utils\ x32\ busybox.exe x32_\ busybox.exe x64\ busybox.exe x64_\ busybox.exe Создадим файл запуска busybox для каталогов "32_" и "64_" я держу 2 варианта: x32 и x64:B:\sys\util\linux\busybox_.cmd@echo off & setlocal enableextensions enabledelayedexpansion pushd set ".c=64_" if /i "%PROCESSOR_ARCHITECTURE%"=="x86" if not defined PROCESSOR_ARCHITEW6432 set ".c=32_" "%~dp0x%.c%\busybox.exe" %* popd endlocal goto :eof Чтоб Вынь знала где находится busybox, создадим "reg" файл:B:\sys\util\linux\busybox_set.regWindows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\busybox.exe] @="b:\\sys\\util\\linux\\busybox_.cmd" Регистрируем, теперь Вынь знает где находится наш busybox и по команде (к примеру: "busybox ls -1") в любом каталоге выполнит действия... Создадим файл запуска bash для каталогов "32_" и "64_" я держу 2 варианта: x32 и x64:B:\sys\util\linux\bash_.cmd@echo off & setlocal enableextensions enabledelayedexpansion pushd set ".c=64_" if /i "%PROCESSOR_ARCHITECTURE%"=="x86" if not defined PROCESSOR_ARCHITEW6432 set ".c=32_" start "bash" "%~dp0x%.c%\busybox.exe" bash -s -c "export PS1='\\[\\e[33m\\]\\u@\\h:\\[\\e[0m\\]\\w# ' PS2='> 1' PS4='+ 2';" popd endlocal goto :eof Чтоб Вынь знала где находится bash, создадим "reg" файл:B:\sys\util\linux\bash_set.regWindows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\bash.exe] @="b:\\sys\\util\\linux\\bash_.cmd" Регистрируем, теперь Вынь знает где находится наш bash и по команде "bash" в любом каталоге запустить shell... ps: Скрины не прикладываю, кому интересно - попробуют... -)
|
Отправлено: 05-Июн-2023 20:35
(спустя 1 месяц 27 дней)
cartmenezz
- Стаж: 9 лет 3 месяца
- Сообщений: 527
- Репутация:14[+] [-]
- Откуда: Калининград
|
Приветствую Столкнулся с такой проблемой: попался ПК, на котором обработка списка работает не так как на остальных ПК. Полдня ломал голову, пока нашел проблему, оказалось что на одном из этапов почему-то начальная буква в некоторых путях становится заглавной. Объяснить сложно, проще показать... Генерируется текстовый список такого вида:list2.txt/data/app/~~vbb-4Sr_TFUFVRUiIznlMA==/com.cloudmosa.puffinTV-V-3biLIY_JveVupG4NBadw==/base.apk=com.cloudmosa.puffinTV /data/app/~~beLf1VwyPmEoYVQQGUuqaQ==/com.tiktok.tv-JP1bQPRwxo20HuGQnSAiRw==/base.apk=com.tiktok.tv /data/app/~~PrAg3sL12Hndgd0_CEwJ1g==/com.amazon.tv.leanbacklauncher-j9b4xh7N_I3Gn6othd9-lw==/base.apk=com.amazon.tv.leanbacklauncher /data/app/~~QuplC_JWOEyL8UlsvzDf1g==/limehd.ru.ctv-L0bpN0Hs9CPuy1zZTPcS0g==/base.apk=limehd.ru.ctv /data/app/~~xKzkv8ovPXswE5FxsLwtAQ==/com.lonelycatgames.Xplore-BRAB1f1Li6jnszZxXn9Uuw==/base.apk=com.lonelycatgames.Xplore /data/app/~~t85AaDRhPui2X0v6Xs3S9A==/ru.fmplay-V8BpIYx3KoD9qbVBRo3mtg==/base.apk=ru.fmplay /product/app/Esticker/Esticker.apk=com.tcl.esticker /product/priv-app/PlayAutoInstall/PlayAutoInstall.apk=android.autoinstalls.config.google.gtvpai /product/app/InitSetup/InitSetup.apk=com.tcl.initsetup /system/priv-app/CalendarProvider/CalendarProvider.apk=com.android.providers.calendar /system_ext/priv-app/TwoPanelSettingsOverlay/TwoPanelSettingsOverlay.apk=com.android.tv.settings На самом деле строк конечно больше. Требуется из каждой строки получить две части: 1я - до последнего знака "=", 2я - после. Если откинуть все лишенее, у меня это было реализовано так:test2.cmd@echo off cls SetLocal EnableExtensions cd /d "%~dp0" for /f "delims=" %%A in (list2.txt) do ( for /f "tokens=1,2 delims==" %%a in ("%%~nxA") do ( set "package=%%b" set "fullpath=%%~pA%%a" call set "fullpath=%%fullpath:\=/%%" call echo %%fullpath%% ) ) echo. pause Правильный выхлоп для этого списка:правильно/data/app/~~vbb-4Sr_TFUFVRUiIznlMA==/com.cloudmosa.puffinTV-V-3biLIY_JveVupG4NBadw==/base.apk /data/app/~~beLf1VwyPmEoYVQQGUuqaQ==/com.tiktok.tv-JP1bQPRwxo20HuGQnSAiRw==/base.apk /data/app/~~PrAg3sL12Hndgd0_CEwJ1g==/com.amazon.tv.leanbacklauncher-j9b4xh7N_I3Gn6othd9-lw==/base.apk /data/app/~~QuplC_JWOEyL8UlsvzDf1g==/limehd.ru.ctv-L0bpN0Hs9CPuy1zZTPcS0g==/base.apk /data/app/~~xKzkv8ovPXswE5FxsLwtAQ==/com.lonelycatgames.Xplore-BRAB1f1Li6jnszZxXn9Uuw==/base.apk /data/app/~~t85AaDRhPui2X0v6Xs3S9A==/ru.fmplay-V8BpIYx3KoD9qbVBRo3mtg==/base.apk /product/app/Esticker/Esticker.apk /product/priv-app/PlayAutoInstall/PlayAutoInstall.apk /product/app/InitSetup/InitSetup.apk /system/priv-app/CalendarProvider/CalendarProvider.apk /system_ext/priv-app/TwoPanelSettingsOverlay/TwoPanelSettingsOverlay.apk Но почему-то на одном ПК выхлоп такой:не правильно/Data/app/~~vbb-4Sr_TFUFVRUiIznlMA==/com.cloudmosa.puffinTV-V-3biLIY_JveVupG4NBadw==/base.apk /Data/app/~~beLf1VwyPmEoYVQQGUuqaQ==/com.tiktok.tv-JP1bQPRwxo20HuGQnSAiRw==/base.apk /Data/app/~~PrAg3sL12Hndgd0_CEwJ1g==/com.amazon.tv.leanbacklauncher-j9b4xh7N_I3Gn6othd9-lw==/base.apk /Data/app/~~QuplC_JWOEyL8UlsvzDf1g==/limehd.ru.ctv-L0bpN0Hs9CPuy1zZTPcS0g==/base.apk /Data/app/~~xKzkv8ovPXswE5FxsLwtAQ==/com.lonelycatgames.Xplore-BRAB1f1Li6jnszZxXn9Uuw==/base.apk /Data/app/~~t85AaDRhPui2X0v6Xs3S9A==/ru.fmplay-V8BpIYx3KoD9qbVBRo3mtg==/base.apk /product/app/Esticker/Esticker.apk /product/priv-app/PlayAutoInstall/PlayAutoInstall.apk /product/app/InitSetup/InitSetup.apk /system/priv-app/CalendarProvider/CalendarProvider.apk /system_ext/priv-app/TwoPanelSettingsOverlay/TwoPanelSettingsOverlay.apk Т.е. в путях "data" заменяется на "Data", что не дает работать на последующем этапе. Возможно подобных ПК было больше, заметил случайно (просто для получения конечного результата у меня еще используется что-то типа базы имен, и я мог просто не замечать) ... С чем может быть связано такое поведение? и можно ли обойти? трогать реестр и т.п. тоже не вариант, скрипт работает без прав админа. В идеале, конечно, вообще заменить способ "расчленения" строк, но я что-то ничего толкового выдумать не могу. Важно так же, что бы было поменьше движений и сложных конструкций, ато обработка затянется, списки порой большие (и по пути из каждой строки идет обращение к устройству по сети, потом выполнение команды, потом забираю ответ... это довольно долго, поэту и добавил базу с готовыми именами, сначала результат ищется в ней) ... Есть еще пара черновых вариантов:test3.cmd@echo off cls SetLocal EnableExtensions cd /d "%~dp0" if EXIST "list3.txt" del /f /q "list3.txt" for /f "delims=" %%A in (list2.txt) do ( set "fullpath=%%A" call set "fullpath=%%fullpath:.apk=.apk %%" >>list3.txt call echo %%fullpath%% ) for /f "tokens=1,2" %%A in (list3.txt) do ( set "package=%%B" call set "package=%%package:~1%%" set "fullpath=%%A" call echo %%fullpath%% ) if EXIST "list3.txt" del /f /q "list3.txt" echo. pause exit test3.cmd (var2)@echo off cls SetLocal EnableExtensions cd /d "%~dp0" if EXIST "list3.txt" del /f /q "list3.txt" for /f "delims=" %%A in (list2.txt) do ( set "fullpath=%%A" call set "fullpath=%%fullpath:.apk=.apk %%" for /f "tokens=1,2" %%a in ('call echo %%fullpath%%') do ( set "package=%%b" call set "package=%%package:~1%%" set "fullpath=%%a" call echo %%fullpath%% ) ) if EXIST "list3.txt" del /f /q "list3.txt" echo. pause exit test4.cmd@echo off cls SetLocal EnableExtensions cd /d "%~dp0" for /f "tokens=1-10 delims=/" %%A in (list2.txt) do ( if "%%B" NEQ "" (set "package=%%B" & set "fullpath=%%A") if "%%C" NEQ "" (set "package=%%C" & set "fullpath=%%A/%%B") if "%%D" NEQ "" (set "package=%%D" & set "fullpath=%%A/%%B/%%C") if "%%E" NEQ "" (set "package=%%E" & set "fullpath=%%A/%%B/%%C/%%D") if "%%F" NEQ "" (set "package=%%F" & set "fullpath=%%A/%%B/%%C/%%D/%%E") if "%%G" NEQ "" (set "package=%%G" & set "fullpath=%%A/%%B/%%C/%%D/%%E/%%F") if "%%H" NEQ "" (set "package=%%H" & set "fullpath=%%A/%%B/%%C/%%D/%%E/%%F/%%G") if "%%I" NEQ "" (set "package=%%I" & set "fullpath=%%A/%%B/%%C/%%D/%%E/%%F/%%G/%%H") for /f "tokens=1,2 delims==" %%a in ('call echo %%package%%') do ( set "_fullpath=%%a" set "package=%%b" ) call echo /%%fullpath%%/%%_fullpath%% ) echo. pause exit 1й (test3.cmd) - вроде еще ничего (думаю что крайне маловероятно что в пути дважды попадется ".apk"... хотелось бы заменять ".apk=" на ".apk ", тогда было бы прям отлично, идеальный вариант, но экранировать знак "=" не получилось), 2й - уже сейчас слишком медленный, а по хорошему, наверное, надо еще побольше токенов проверять, на всякий пожарный ... PS: или все-таки можно провернуть что-то типа set "fullpath=%fullpath:.apk^==.apk %" ... Ещё пробовал включить ENABLEDELAYEDEXPANSION, задать переменную "var=.apk=" и потом сделать замену: set "fullpath=%fullpath:!var!=.apk %" но так не работает
|
JuraAD
- Стаж: 3 года 5 месяцев
- Сообщений: 86
- Репутация:27[+] [-]
|
cartmenezz, Разбор позже -) То, что ты делаешь - плохо, функции для обработки файловой системы, с того и большие буквы и переформатирование слэжэй... Попробуй сам разобраться - строки в каталоге скрипта в файле - .test3.txt Единственное - кавычки в строках - ТАБУ... но это решается заменой на спец.символы... -))).test3.cmd@echo off&setlocal enableextensions enabledelayedexpansion for /f "tokens=* delims=" %%a in (%~dp0.test3.txt) do call :.find "%%a" endlocal&exit /b 0 :.find set "x0=%~1" set /a "x1=0" set /a "x2=0" set /a "x3=0" :.find_next call set "x4=%%x0:~!x1!,1%%" if "!x4!"=="/" set /a "x2=!x1!+1" if "!x4!"=="=" set /a "x3=!x1!-!x2!" set /a "x1+=1" if not "!x4!"=="" goto :.find_next call set "x5=%%x0:~0,!x2!%%" call set "x6=%%x0:~!x2!,!x3!%%" echo "!x0!" echo "!x1!" echo "!x2!" echo "!x3!" echo "!x4!" echo "!x5!" echo "!x6!" goto :eof
|
cartmenezz
- Стаж: 9 лет 3 месяца
- Сообщений: 527
- Репутация:14[+] [-]
- Откуда: Калининград
|
JuraAD, 100507функции для обработки файловой системы, с того и большие буквы и переформатирование слэжэй... я просто раньше думал, что только слэши меняются (в 99% так и было)... От этой задумки, я конечно уже отказался.100507Попробуй сам разобраться на вид сложновато, но видимо придется)) Благодарю upd: Сейчас на работе, вникнуть не успел, но попробовать-попробовал. Работает, но очень медленно... боюсь, для моего сценария это совсем не подходит, но в любом случае спасибо
|
Страница 84 из 94
Текущее время: 21-Дек 20:52
Часовой пояс: UTC + 3
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах Вы не можете прикреплять файлы к сообщениям Вы можете скачивать файлы
|
|