2017-08-07 142 views
0

我是在一个批处理文件试图这样(非常基本的)命令批处理文件变量替换

takeown.exe /F c:\WINDOWS\SYSTEM32\%1% 
ICACLS C:\WINDOWS\SYSTEM32\%1% /grant MY\PC:F 

;当我从一个管理员运行CMD提示符:

c:\Data>takeownscript.bat drivers\netbio.sys 

它抛出一个错误他说:

C:\数据> takeown.exe/F C:\ WINDOWS \ SYSTEM32 \ DRIVERS \ netio.sys

SUCCESS:用户“MY \ PC”拥有的文件(或文件夹):“c:\ WINDOWS \ SYSTEM32 \ drivers \ netio.sys” 。

C:\数据> ICACLS C:\ WINDOWS \ SYSTEM32 \ DRIVERS \ netio.sysF C:\ WINDOWS \ SYSTEM32 \ DRIVERS \ netio.sysF:系统找不到指定的 文件。成功处理0个文件;处理失败1 文件

如何/为什么F被追加到驱动程序路径?我怀疑我没有使用正确的替换语法。

+2

批处理文件的参数应该使用'%1'来引用,而不是'%1%',如本[问题]中所述(https://stackoverflow.com/questions/14286457/using-parameters-in-批处理文件 - 在-DOS命令行)。 – Laf

+0

@Laf的工作。请考虑这个查询解决! – Zoso

回答

0

刚刚完成,所以社区知道有一个答案。


命令行参数被用作%nn表示参数)在一个批处理文件。

另一件需要注意的事情是应该始终使用%~1%~1去掉%1的引号。请注意,这不起作用:%~yourVariable%