批处理文件中的更改目录命令无效

时间:2016-11-03 16:19:03

标签: batch-file cmd

我需要创建一个批处理文件来为我所在的课程做一些事情。所有需要运行的工作但是我找不到一个简单的答案,为什么更改目录(CD)对我不起作用。我无法弄明白,所以任何帮助都会受到赞赏。

我的代码如下

@echo off

title NewUser

: creating a folder called "Scripts" on C:\
: add local user named: "MaxLocal" password: "student"
: create directory at the root of F:\ named "Files_for_Max"
: create ACE for user "MaxLocal" to "Files_for_Max" with: Read, read & Execute, List folder contents
: Re-establish inheritence to sub folders and files
: copies cmd.exe from C:\Windows\System32 folder to "Files_for_Max"
: add "MaxLocal" to management group created in Assignment 3
: produces ICACLS report for "Files_for_Max" called "icaclsReport.txt" in "Scripts"
: moves this .bat file to "Scripts"

mkdir "C:\Scripts"

net user MaxLocal student /add

mkdir "F:\Files_for_Max"

icacls "F:\Files_for_Max" /grant MaxLocal:(OI)(CI)RX 

copy "C:\Windows\System32\cmd.exe" "F:\Files_for_Max"

net localgroup Management MaxLocal /add

icacls F:\Files_for_Max /save C:\Scripts\icaclsReport.txt /t

move  "F:\NewUser.bat" "C:\Scripts"

pause

所以它的最后一行特别是,MOVE效果很好,但我不允许出于任何原因使用它。我已经尝试了很多方法来解决如何使用CD而无法得出结论。我需要在F上获取此NewUser.bat文件并将其移动到新创建的脚本文件夹。是的我已经尝试了/ D命令,但也许我没有正确的间距或在不需要时使用引号?

有什么想法吗?

2 个答案:

答案 0 :(得分:3)

cd /d "C:\Scripts"

这会将当前工作目录更改为C:\ Scripts 如果您想改为移动批处理文件:

copy "%~f0" "C:\Scripts"
(goto) 2>nul & del "%~f0"

将自身(%~f0)复制到C:\ Scripts中,然后删除自身,实际上是移动命令。
如果你想要你可以这样做:

copy "%~f0" "C:\Scripts"
start "C:\Scripts\~nx0"
(goto) 2>nul & del "%~f0"

这也会启动复制的批处理文件,然后删除自己。

答案 1 :(得分:0)

您可以在复制命令之前使用cd,这可能与您在移动命令之前需要使用它的方式相对应。

cd C:\Windows\system32
copy cmd.exe F:\Files_for_Max

批处理文件询问“复制什么位置”,因此我们有复制副本,cmd.exe用于什么,F:\ Files_for_Max用于哪里。

类似地,

cd F:\
move NewUser.bat C:\Scripts

应该是它的工作方式。所以首先你要求它移动指定文件之前进入目录F:\,就像我在复制命令中所做的那样。