나는 일괄 스크립팅의 세계에 익숙하지 않으므로 기본적인 질문으로 나타날 수있는 것을 용서하십시오. 나는 다른 직업을 배정 받으면서 배우고 있으며 가능한 한 자동화의 큰 지지자입니다. 여러 작업을 수행하는 여러 배치 파일이 있습니다. 이러한 각 파일에는 c : \ temp와 같은 하드 코드 된 경로가 있습니다. 배치 파일의 d : \ data 등 처음에는 배치 파일에서 호출 할 수있는 텍스트 파일로 옮겼습니다.
for /f "tokens=1,2 delims==" %%R in (config.txt) do (
if %%R==bdata set bdata=%%S
if %%R==cdata set cdata=%%S
)
config.txt 파일에는 다음 값이 포함됩니다
bdata=c:\temp
cdata=d:\data
새 변수를 만들어야 할 때마다 config.txt 파일과 config.bat 파일도 업데이트해야한다는 것을 깨달았습니다.
다음과 같이 모든 값을 config.bat 파일로 이동하기로 결정했습니다.
set bdata=c:\temp
set cdata=d:\data
그런 다음 하드 코드 된 경로가 아닌 변수를 호출하도록 기존의 각 배치 파일을 업데이트했습니다. 또한 config.bat를 제외한 각 배치 파일에 다음 코드 줄을 추가했습니다. config.bat 파일에 추가 된 유일한 줄은 @echo off
입니다.
@echo off
setlocal enableextensions enabledelayedexpansion
call config.bat
그런 다음 모든 배치 파일을 순차적으로 호출하는 것을 중앙 집중화하는 다른 배치 파일이 있습니다. 이 배치 파일의 이름은 start.bat입니다. 내가 사용하는 이유 는 이전 start /wait
에 delete.bat
실행 compress.bat
이 끝날 기회 가 있었기 때문 입니다.
start /wait compress.bat
start /wait validate.bat
start /wait delete.bat
질문
- 이것이 가치를 집중시키는 가장 좋은 방법입니까, 그렇지 않은 경우 더 좋은 방법은 무엇입니까?
setlocal enableextensions enabledelayedexpansion
기존 배치 파일을 모두 지정해야 합니까?- 모든 배치 파일에서 @echo를 해제해야합니까, 아니면 config.bat 파일만으로 충분합니까?
- 가
start /wait
여러 파일을 호출하는 가장 좋은 방법은? 상기 명령을 사용하여 한 배치 파일에서 다른 배치 파일로 값을 전달할 수 있습니까? - 모든 배치 파일에는 이동, 삭제 등의 기능이 다르지만 %% a 또는 %% b를 사용하십시오. 괜찮습니까?
예를 들어
validate.bat
파일은 코드가
for %%a in (%bdata%\*.*) do if "%%~xa" == "" move /Y "%bdata%\%%~xa" "%bdata%\%done%"
그리고 delete.bat file
코드가
for %%a in (%bdata%\*.*) do if "%%~xa" == ".txt" del "%%a"