2014-07-16 4 views
3

데이터베이스를 작성하고 스크립트를 폴더에서 실행하는 cmd 스크립트가 있습니다. 나는 1에서 100까지의 스크립트를 가지고 있는데, 순차적으로 실행하지 않는다. 그것은 1-10, 그리고 나서 100 그리고 11 이후를 실행하는 것 같습니다. 숫자 순으로 스크립트를 실행하려면 어떻게해야합니까?숫자 순서로 SQL 스크립트 실행

for %%F IN (%currentdir%\MyScripts\*) do (
@echo %%F 
%sqlRunner% -S %dbServer% -U %username% -P %password% -d %dbName% -i %%F -b 
if ERRORLEVEL 1 GOTO ERROR) 
+4

숫자가 0으로 채워지도록 스크립트의 이름을 바꾸십시오 ("script1"대신 "script001"). –

+0

순차적으로 실행 중이지만 숫자 순서 (1, 2, 3, 4) 대신 문자열/알파벳 순서 (모든 1 - 1, 10, 100 - 모든 2 - 3 ... 10, 11, 12 ...). @ GordonLinoff가 패딩 된 숫자를 제안하면 문자열 순서와 숫자 순서가 같은 방식으로 정렬됩니다 (모든 000의 ...). – TessellatingHeckler

+0

스크립트를 숫자로 실행하도록 배치 파일을 작성할 수 있지만 코드는 스크립트 이름의 형식에 따라 달라집니다. – foxidrive

답변

0

위에서 언급 한대로 @Gordon은 제로 패딩을 사용하여 문제를 해결할 수 있습니다. 스크립트가 가장 작은 문자열부터 시작하여 오름차순으로 이름을 선택하기 때문에이 스크립트를 사용하고 있습니다. 스크립트 이름의 경우 :

script1 < script2 .... < script10 < script100 < script11 ... < script99 (just string comparison) 

다음은 스크립트를 순서대로 실행하는 데 문제가있는 이유를 명확히 보여줍니다.

script001 < script002 ... < script 010 ...< script050 ... < script100 (just string comparison) 

이 따라서 스크립트가 이제 순서대로 실행된다 : 아래의 문자열 순서와 같이

그러나이 문제는 제로 패딩 해결할 수 있습니다.