2016-05-09 69 views
1

这是一个非常简单的批处理文件,我开始使用命令行进行练习,但由于某些原因,它无法正常工作。下面的代码:更改多个文件批处理文件不起作用

::Change names 

@echo off 
set /p DirLoc = "Enter file location:" 
cd %DirLoc% 
echo %DirLoc% 
dir 
set /p SetFrom = "What file type is it?" 
set /P SetTo = "What file type do you want?" 
echo Change from %SetFrom% 
echo to %SetTo% 
rename *.%SetFrom% *.%SetTo% 
echo process has been completed 
pause 

echo on 

出于某种原因,当我插入的文件夹位置,这在我的情况是“C:\用户\马尔科DS \桌面\测试”,该计划将只去钱柜“C: \用户\ Marco DS \桌面“,这是不好的。我尝试了几个我的项目的替代品,但我从来没有设法得到所需的目录。

感谢您的任何建议。

+0

删除'''''''''''''''''''''''''''''''''否则它们将成为变量名称的一部分... – aschipfl

+0

我是否必须删除两个空格?谢谢! – user3604362

+0

对于'set/P',你必须删除左边的空格,右边的无关紧要;然而,对于'set'(没有'/ P'),你最需要删除两个;所以为了保持一致性,我建议删除两个“set/P”... – aschipfl

回答

1

问题的一部分是,在批处理中,设置变量时不应该使用空格或引号,否则它们将成为变量的一部分。与许多语言不同,Batch将所有空格字符作为代码的一部分读取。在这种情况下,变量的名称被设置为%DirLoc %而不仅仅是%DirLoc%。为了使您的代码以您想要的方式工作,您需要删除代码中的所有不需要的空格和引号。

例如: set /p DirLoc = "Enter file location:"成为set /p DirLoc=Enter file location:

要看到这方面的证据,尝试echo %DirLoc%之后写echo %DirLoc %和运行代码。

相关问题