我正在编写一个批处理脚本,其中我要在函数内部编写一组指令,因为我想多次调用它,所以想重用它。对我来说,当我编写外部函数时它可以工作,但是在内部函数中它永远都行不通。在我使用的代码下面。
@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=
答案 0 :(得分:1)
我将告诉您我们大多数人在编写批处理文件方面的最佳做法。
请勿将引号分配给变量。不过,您可以使用引号来保护变量的赋值。这样有助于保护分配中的特殊字符,也可以避免分配尾随空格。
养成在与其他命令一起使用引号时总是使用引号引起来的习惯。
这就是我编写批处理文件的方式。
@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