2010-03-01 9 views

답변

6

다음은 현재의 모든 디렉토리에있는 SQL 파일과 모든 하위 디렉토리의 이름을 인쇄합니다 명령 줄에서

for /r %f in (*.sql) do echo %f 

실행을 시작할 수 있습니다.

그런 다음 echo %fsqlcmd <connection args> -i%f으로 대체하여 스크립트를 실행하십시오.

희망이 도움이됩니다.

+2

다운 투표를해야 하는가? 어떻게 이럴 수있어? 진심으로, 당신이 내 대답을 좋아하지 않는다면, 아니면 당신이 내게 알려 줄 수 있나? 우리는 모두 배울 수있는 곳입니다. –

+0

그것은 나를 위해 작동하지 않았다 – ob213

+0

공백없이 디렉터리와 파일 이름을 사용해보십시오. (편리 할 수도 있습니다 http://www.den4b.com/?x=downloads&product=renamer) – mbmihura

0

루프를 시도하십시오 for. 이 명령의 옵션은 진화 내가 사용하지만, DOS 포함 "윈도우 XP에서 cmd.exe"가정하는 DOS의 버전을 모르겠어요, 이런 일이 일할 수 :

for /r . %f in (*.sql) do @echo %f 

좋아,이 것 파일의 이름 만 인쇄하십시오. 이미 명령 행에서 실행할 수있는 프로그램이 있으리라 가정합니다 대신 사용할 수있는 하나의 SQL 파일을 실행합니다.

자세한 내용은 for /?을 참조하십시오.

+0

는 "f는이 시간에 예상치 못한"오류 – ob213

+0

은 노 코멘트로 @echo %% F – rob

2
for %f in ("c:\path\to\dir\*.sql") do sqlcmd -S [SERVER_NAME] -d [DATABASE_NAME] -i "%f" -b 
3

여기 있습니다. 이 배치 파일은 디렉토리와 그 서브 디렉토리에있는 모든 sql 파일을 실행합니다. 또한 결과와 함께 output.txt 파일을 생성하여 오류 및 기타 등등을 볼 수 있습니다. 배치 파일에 대한 일부 참고 사항 :

  • [YourDatabase]는 스크립트를 실행하려는 데이터베이스의 이름입니다.
  • [YourPath]는 모든 스크립트를 보관하는 경로입니다.
  • [경우 yourservername \ YourInstanceName을]은 '\'
  • 당신은 당신의 서버
  • 에 적합한 어떤 각 변수에 대한 '='후 텍스트를 대체 할 것으로 분리 된 SQL 서버 이름 및 인스턴스 이름입니다
  • 이있다 [YourPath] 있는지 확인 [YourPath] 주변에 어떤 따옴표를 넣지 마십시오 '='주위에 공간을 반드시 넣어하지가 수 '\'마지막

    SET 데이타베이스 = [YourDatabase]

    ,

    SET ScriptsPath = YourPath]

    SET의 ServerInstance = 경우 yourservername \ YourInstanceName을]

    IF EXIST "% ScriptsPath 경우 output.txt %"델 "% ScriptsPath 경우 output.txt %"

    형 NUL> "% ScriptsPath 경우 output.txt %"

    /R "의 ScriptsPath %의 %"%% G IN (* .SQL) DO (

    SQLCMD % -d % 데이터베이스 -S % ServerInstance % -i "% FOR % G "-o"%% G.txt "

    echo ........................................... .......................................... ""% ScriptsPath % 출력. TXT "

    가 실행 에코"%% G ">>"% ScriptsPath 경우 output.txt % "

    에코 ..................... .................................................. .............. ""% ScriptsPath % output.txt "

    "% ScriptsPath % output.txt "+"%% G.txt ""% ScriptsPath % output .txt "

    del"%% G.txt "

    )

    내가 가진
+0

'SET' 뒤에 다음 줄을 추가하면 후행 백 슬래시가 생깁니다 :'IF NOT % ScriptsPath : ~ -1 % == "\"SET ScriptsPath = % ScriptsPath % \' –

관련 문제