2016-05-09 110 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 %和運行代碼。

相關問題