批处理脚本中的复制功能不起作用

时间:2018-11-09 18:21:56

标签: batch-file

我正在编写一个批处理脚本,其中我要在函数内部编写一组指令,因为我想多次调用它,所以想重用它。对我来说,当我编写外部函数时它可以工作,但是在内部函数中它永远都行不通。在我使用的代码下面。

@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 :(得分: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