Вы используете устаревший браузер. Этот и другие сайты могут отображаться в нём некорректно. Вам необходимо обновить браузер или попробовать использовать другой.
[CMD/PS] Как сделать, чтобы скрипт на PowerShell отрабатывал в BATCH-файле?
Если скрипт не работает на некоторых ПК с Windows 7 и Windows 11, это может быть вызвано различиями в настройках или правах доступа. Пожалуйста, попробуйте следующие рекомендации:
1. Проверьте права доступа: Убедитесь, что у пользователя, запускающего скрипт, есть достаточные права доступа для чтения файлов на рабочем столе и записи на диск C.
2. Проверьте путь к файлу: Убедитесь, что путь к файлу "qwerty.zip" указан корректно и что файл действительно существует на рабочем столе.
3. Запустите скрипт с правами администратора: Попробуйте запустить скрипт с правами администратора, особенно на Windows 7, где могут потребоваться дополнительные разрешения.
4. Используйте PowerShell: Вместо batch-скрипта вы можете попробовать использовать скрипт на PowerShell, который может быть более совместим с разными версиями Windows. Вот пример PowerShell скрипта для копирования файла "qwerty.zip" с рабочего стола на диск C:
Для того чтобы запустить скрипт на PowerShell из batch-файла, вам нужно добавить команду вызова PowerShell с вашим скриптом. Вот как это можно сделать:
1. Создайте новый batch-файл (например, script.bat) и откройте его в текстовом редакторе.
2. Добавьте следующую строку в ваш batch-файл, чтобы вызвать PowerShell и выполнить ваш скрипт:
Замените "путьквашему_скрипту.ps1" на путь к вашему скрипту на PowerShell (например, "C:\путь\к\вашему\скрипту.ps1").
3. Сохраните изменения в batch-файле.
Теперь, когда вы запустите batch-файл, он вызовет PowerShell и выполнит ваш скрипт на PowerShell. Пожалуйста, убедитесь, что в вашем скрипте на PowerShell нет ошибок и он работает корректно.
Попробуйте это решение и сообщите, если у вас возникнут дополнительные вопросы или проблемы.
Для того чтобы запустить скрипт на PowerShell из batch-файла, вам нужно добавить команду вызова PowerShell с вашим скриптом. Вот как это можно сделать:
1. Создайте новый batch-файл (например, script.bat) и откройте его в текстовом редакторе.
2. Добавьте следующую строку в ваш batch-файл, чтобы вызвать PowerShell и выполнить ваш скрипт:
Замените "путьквашему_скрипту.ps1" на путь к вашему скрипту на PowerShell (например, "C:\путь\к\вашему\скрипту.ps1").
3. Сохраните изменения в batch-файле.
Теперь, когда вы запустите batch-файл, он вызовет PowerShell и выполнит ваш скрипт на PowerShell. Пожалуйста, убедитесь, что в вашем скрипте на PowerShell нет ошибок и он работает корректно.
Попробуйте это решение и сообщите, если у вас возникнут дополнительные вопросы или проблемы.
Для того чтобы внутри batch-файла отработал скрипт PowerShell без необходимости создания отдельного файла .ps1, вы можете вставить сам скрипт PowerShell прямо внутрь batch-файла. Вот пример того, как это можно сделать:
В этом примере скрипт PowerShell вставлен внутрь batch-файла. Он создает временный файл tmp.ps1, в который записывает скрипт PowerShell, а затем запускает PowerShell для выполнения этого скрипта. После выполнения скрипта PowerShell временный файл удаляется.
Попробуйте использовать этот подход и проверьте, работает ли он для вашего случая. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.
Для того чтобы внутри batch-файла отработал скрипт PowerShell без необходимости создания отдельного файла .ps1, вы можете вставить сам скрипт PowerShell прямо внутрь batch-файла. Вот пример того, как это можно сделать:
В этом примере скрипт PowerShell вставлен внутрь batch-файла. Он создает временный файл tmp.ps1, в который записывает скрипт PowerShell, а затем запускает PowerShell для выполнения этого скрипта. После выполнения скрипта PowerShell временный файл удаляется.
Попробуйте использовать этот подход и проверьте, работает ли он для вашего случая. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.
@AssistGPT Как сделать после того, как внутри batch-файла отработал скрипт PowerShell, продолжение batch-файла в оригинальном виде без изменения вида консоли которое изменяет скрипт PowerShell ?
@AssistGPT Как сделать после того, как внутри batch-файла отработал скрипт PowerShell, продолжение batch-файла в оригинальном виде без изменения вида консоли которое изменяет скрипт PowerShell ?
Для того чтобы продолжить выполнение batch-файла после отработки скрипта PowerShell без изменения вида консоли, можно использовать оператор call для запуска скрипта PowerShell. Вот пример того, как это можно сделать:
CMD/BATCH:
@echo off
set "source=%USERPROFILE%\Desktop"
set "destination=C:\"
set "fileToFind=qwerty.zip"
echo $source = "%source%" > tmp.ps1
echo $destination = "%destination%" >> tmp.ps1
echo $fileToFind = "%fileToFind%" >> tmp.ps1
echo Get-ChildItem -Path $source -Recurse ^| Where-Object { $_.Name -eq $fileToFind } ^| ForEach-Object { >> tmp.ps1
echo Copy-Item $_.FullName $destination >> tmp.ps1
echo } >> tmp.ps1
call powershell.exe -ExecutionPolicy Bypass -File tmp.ps1
del tmp.ps1
REM Продолжение batch-файла
echo Скрипт PowerShell отработал. Продолжаем выполнение batch-файла.
В этом примере после выполнения скрипта PowerShell с помощью call, выполнение batch-файла продолжится без изменения вида консоли. После удаления временного файла tmp.ps1, можно добавить любые дополнительные команды или скрипты для продолжения работы batch-файла.
Попробуйте использовать этот подход и проверьте, работает ли он для вашего случая. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.
Для того чтобы продолжить выполнение batch-файла после отработки скрипта PowerShell без изменения вида консоли, можно использовать оператор call для запуска скрипта PowerShell. Вот пример того, как это можно сделать:
CMD/BATCH:
@echo off
set "source=%USERPROFILE%\Desktop"
set "destination=C:\"
set "fileToFind=qwerty.zip"
echo $source = "%source%" > tmp.ps1
echo $destination = "%destination%" >> tmp.ps1
echo $fileToFind = "%fileToFind%" >> tmp.ps1
echo Get-ChildItem -Path $source -Recurse ^| Where-Object { $_.Name -eq $fileToFind } ^| ForEach-Object { >> tmp.ps1
echo Copy-Item $_.FullName $destination >> tmp.ps1
echo } >> tmp.ps1
call powershell.exe -ExecutionPolicy Bypass -File tmp.ps1
del tmp.ps1
REM Продолжение batch-файла
echo Скрипт PowerShell отработал. Продолжаем выполнение batch-файла.
В этом примере после выполнения скрипта PowerShell с помощью call, выполнение batch-файла продолжится без изменения вида консоли. После удаления временного файла tmp.ps1, можно добавить любые дополнительные команды или скрипты для продолжения работы batch-файла.
Попробуйте использовать этот подход и проверьте, работает ли он для вашего случая. Если у вас возникнут дополнительные вопросы, не стесняйтесь задавать.
Если скрипт PowerShell меняет вид консольного окна batch-файла, это может быть вызвано тем, что PowerShell запускается в новом окне по умолчанию. Для того чтобы избежать этого, можно попробовать запустить PowerShell скрипт в том же окне консоли. Вот как это можно сделать:
CMD/BATCH:
@echo off
set "source=%USERPROFILE%\Desktop"
set "destination=C:\"
set "fileToFind=qwerty.zip"
echo $source = "%source%" > tmp.ps1
echo $destination = "%destination%" >> tmp.ps1
echo $fileToFind = "%fileToFind%" >> tmp.ps1
echo Get-ChildItem -Path $source -Recurse ^| Where-Object { $_.Name -eq $fileToFind } ^| ForEach-Object { >> tmp.ps1
echo Copy-Item $_.FullName $destination >> tmp.ps1
echo } >> tmp.ps1
powershell.exe -ExecutionPolicy Bypass -NoProfile -Command "& { .\tmp.ps1 }"
del tmp.ps1
REM Продолжение batch-файла
echo Скрипт PowerShell отработал. Продолжаем выполнение batch-файла.
В этом примере используется параметр -NoProfile для запуска PowerShell без загрузки профиля, что может ускорить запуск. Кроме того, команда -Command "& { .\tmp.ps1 }" запускает скрипт PowerShell в том же окне консоли.
Попробуйте использовать этот подход и проверьте, помог ли он избежать изменения вида консоли. Если проблема остается, пожалуйста, уточните, какие именно изменения происходят в консоли после выполнения скрипта PowerShell.
Если скрипт PowerShell меняет вид консольного окна batch-файла, это может быть вызвано тем, что PowerShell запускается в новом окне по умолчанию. Для того чтобы избежать этого, можно попробовать запустить PowerShell скрипт в том же окне консоли. Вот как это можно сделать:
CMD/BATCH:
@echo off
set "source=%USERPROFILE%\Desktop"
set "destination=C:\"
set "fileToFind=qwerty.zip"
echo $source = "%source%" > tmp.ps1
echo $destination = "%destination%" >> tmp.ps1
echo $fileToFind = "%fileToFind%" >> tmp.ps1
echo Get-ChildItem -Path $source -Recurse ^| Where-Object { $_.Name -eq $fileToFind } ^| ForEach-Object { >> tmp.ps1
echo Copy-Item $_.FullName $destination >> tmp.ps1
echo } >> tmp.ps1
powershell.exe -ExecutionPolicy Bypass -NoProfile -Command "& { .\tmp.ps1 }"
del tmp.ps1
REM Продолжение batch-файла
echo Скрипт PowerShell отработал. Продолжаем выполнение batch-файла.
В этом примере используется параметр -NoProfile для запуска PowerShell без загрузки профиля, что может ускорить запуск. Кроме того, команда -Command "& { .\tmp.ps1 }" запускает скрипт PowerShell в том же окне консоли.
Попробуйте использовать этот подход и проверьте, помог ли он избежать изменения вида консоли. Если проблема остается, пожалуйста, уточните, какие именно изменения происходят в консоли после выполнения скрипта PowerShell.
Если скрипт PowerShell изменяет параметры консоли batch-файла, то это может быть вызвано тем, что PowerShell по умолчанию настраивает свои параметры консоли при запуске. Для того чтобы избежать этого, можно сохранить текущие параметры консоли перед запуском PowerShell и восстановить их после выполнения скрипта. Вот пример того, как это можно сделать:
CMD/BATCH:
@echo off
:: Сохраняем текущие параметры консоли
for /f "tokens=1,2 delims= " %%a in ('mode con ^| findstr Columns') do set original_columns=%%b
for /f "tokens=1,2 delims= " %%a in ('mode con ^| findstr Lines') do set original_lines=%%b
for /f "tokens=1,2 delims= " %%a in ('reg query "HKCU\Console" /v FaceName ^| find "REG_SZ"') do set original_font=%%b
for /f "tokens=1,2 delims= " %%a in ('reg query "HKCU\Console" /v FontSize ^| find "REG_DWORD"') do set original_fontsize=%%b
:: Ваш скрипт PowerShell
set "source=%USERPROFILE%\Desktop"
set "destination=C:\"
set "fileToFind=qwerty.zip"
echo $source = "%source%" > tmp.ps1
echo $destination = "%destination%" >> tmp.ps1
echo $fileToFind = "%fileToFind%" >> tmp.ps1
echo Get-ChildItem -Path $source -Recurse ^| Where-Object { $_.Name -eq $fileToFind } ^| ForEach-Object { >> tmp.ps1
echo Copy-Item $_.FullName $destination >> tmp.ps1
echo } >> tmp.ps1
powershell.exe -ExecutionPolicy Bypass -NoProfile -Command "& { .\tmp.ps1 }"
del tmp.ps1
:: Восстанавливаем параметры консоли
mode con cols=%original_columns% lines=%original_lines%
reg add "HKCU\Console" /v FaceName /t REG_SZ /d %original_font% /f
reg add "HKCU\Console" /v FontSize /t REG_DWORD /d %original_fontsize% /f
REM Продолжение batch-файла
echo Скрипт PowerShell отработал. Продолжаем выполнение batch-файла.
Этот скрипт сохраняет текущие параметры консоли (количество столбцов, количество строк, шрифт и размер шрифта), запускает скрипт PowerShell, а затем восстанавливает исходные параметры консоли. Попробуйте использовать этот подход и проверьте, помог ли он сохранить параметры консоли без изменений после выполнения скрипта PowerShell.
@AssistGPT Как сделать после того, как внутри batch-файла отработал скрипт PowerShell, продолжение batch-файла в оригинальном виде без изменения вида консоли которое изменяет скрипт PowerShell ?
А что именно он изменяет и на какой версии ОС? У меня, например, размер окон разный, но ничего не изменяется.
Попробуйте удалить подразделы ключа реестра: