2017-08-14 60 views
0

因此,在構建的批處理腳本中,我從文件夾中取出單個文件,將其複製到目標文件夾,並根據次數重命名該腳本已被循環。基本上我需要從多個計算機上分佈的不同文件夾命名爲相同的文件,並將它們複製到一個新的文件夾中進行處理。我已經閱讀了xcopy和copy,因爲它看起來像是要使用的東西,但我一直無法找到任何讓我告訴它只複製一個命名文件的東西。我已爲我有什麼迄今下面的章節註釋行腳本我還沒有想通了:對多個文件夾中的單個文件使用xcopy或copy

ECHO off 
SETLOCAL enabledelayedexpansion 

ECHO Note: Your combined permission list cvs can be found in the desktop folder 

SET /A #=-1 
:start 

SET /A #+=1 

:again  
ECHO Please input the file path to the permissionoutput.txt 
SET /p permissionoutputpath= 

SET "sourcefolder=%permissionoutputpath%" 
SET "destinationfolder=C:\Users\kayla\Desktop\HOLDER-CombinedPermissionsLists" 
IF not exist "%sourcefolder%\permissionoutput.txt" Echo file not found&goto again 
copy "%sourcefolder%\permissionoutput.txt" "%destinationfolder%\permissionoutput%#%.txt" 

ECHO Add another file to combine: y or n? 
SET /p addanotherfile= 
if %addanotherfile%==y goto :start 

UPDATE:代碼更正答案的全部功能,用作參考

回答

1
SET /A #=-1 
:start 

SET /A #+=1 

:again  
ECHO Please input the file path to the permissionoutput.txt 
SET /p permissionoutputpath= 

SET "sourcefolder=%permissionoutputpath%" 
SET "destinationfolder=C:\Users\kayla\Desktop\HOLDER-CombinedPermissionsLists" 
IF not exist "%sourcefolder%\permissionoutput.txt" Echo file not found&goto again 
copy "%sourcefolder%\permissionoutput.txt" "%destinationfolder%\permissionoutput%#%.txt" 

ECHO Add another file to combine: y or n? 
SET /p addanotherfile= 
if /i "%addanotherfile%"=="y" goto start 

#是一個合法的變量名。它初始化爲-1然後通過:start開始,每個循環,使第一個值就會產生時,它的使用爲0(如果你想在1開始只是將其初始化到0代替)

下一頁 - 你sets - 但是空格在字符串中有效set命令將包含在set指令中指定的變量名/值中。 「引用分配」確保線上的任何零散空格不包含在分配的值中。

好吧 - 接下來,確保文件存在,如果不存在,則生成一條消息並循環回:again,它繞過#的增量。

否則,只需複製文件即可。你知道它的源名,並且你的目標名是通過包含%#%來包含當前值#(所有的批量變量都是字符串 - set /a指令僅僅將字符串轉換爲二進制來執行所需的計算,然後轉換返回字符串以存儲在環境中。)

最後,解釋添加另一個文件的請求。 if /i使比較不區分大小寫。由於您無法直接控制用戶的回覆,因此「引用每一方」可確保在用戶輸入「確定'nuff'或其他意外的響應時不會違反if語法。

前導冒號是而不是需要在goto。我寧願忽略它以保持與call命令一致,其中不冒號表示將調用外部例程,並且冒號意味着該例程位於該批處理文件中。

相關問題