функция копирования в пакетном скрипте не работает - PullRequest
0 голосов
/ 09 ноября 2018

Я пишу пакетный скрипт, в котором я пишу набор инструкций внутри функции, поскольку я хочу вызывать ее много раз, поэтому хочу использовать ее повторно. Для меня это работает, когда я пишу вне функции, но внутри функции это никогда не работает. Ниже код, который я использовал.

@echo off

set _prefs="%APPDATA%\test\test\BrowserProfile\prefs.js"
set _prefs_notes="%ProgramFiles(x86)%\test\tset1\Data\workspace\BrowserProfile\prefs.js"

#rem it works
copy /y %_prefs_notes% %_prefs_notes%.copy1 > nul

CALL :AMEND_PREFJS %_prefs_notes%
EXIT /B 




:AMEND_PREFJS
rem make copy of prefs file
#rem it does not work
copy /y %~1 %~1.copy > nul
findstr /v "layers.acceleration.disabled" "%~1" > "%~1.tmp"
echo end

set %~1=
EXIT /B 0
goto end

:prefs_not_found
rem set error level?
echo "file does not exist -- %_prefs_notes%"

:end
set _prefs=

1 Ответ

0 голосов
/ 09 ноября 2018

Я собираюсь рассказать вам о том, что большинство из нас делает, как лучшие практики для написания пакетных файлов.

Никогда не назначайте кавычки для переменных. Вы можете использовать кавычки для защиты присваивания переменной. Это помогает защитить специальные символы в назначении, а также удерживает вас от назначения завершающих пробелов.

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

Вот так я бы написал ваш командный файл.

@echo off

set "_prefs=%APPDATA%\test\test\BrowserProfile\prefs.js"
set "_prefs_notes=%ProgramFiles(x86)%\test\tset1\Data\workspace\BrowserProfile\prefs.js"

#rem it works
copy /y "%_prefs_notes%" "%_prefs_notes%.copy1" > nul

CALL :AMEND_PREFJS "%_prefs_notes%"
EXIT /B 

:AMEND_PREFJS
rem make copy of prefs file
#rem it does not work
copy /y "%~1" "%~1.copy" > nul
findstr /v "layers.acceleration.disabled" "%~1" > "%~1.tmp"
echo end
EXIT /B 0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...