2016-06-08 3 views
0

많은 하위 폴더에서 CSV (및 다른 파일)를 내보내려고합니다. 로드 할 데이터베이스 서버에서 삭제되는 보관 폴더입니다. 어떤 경우에는 작동하는 두 줄의 코드 (또는 작동 했음)가 발견되었지만 박쥐 파일에로드되거나 xp_cmdshell 명령으로 호출되면 명령이 작동하지 않습니다.Windows Server 2008 명령은 CMD에서 작동하지만 배치 파일에서는 작동하지 않습니다.

이 명령은 여러 (수백) 개의 하위 디렉토리에있는 모든 파일을 추출하기위한 것입니다. 다시이 명령은 명령 프롬프트에 수동으로 넣을 때 작동하지만 SQL Server에서 bat (또는 cmd 파일) 또는 xp_cmdshell을 통해 호출 할 때는 작동하지 않습니다. 배치 파일에서 사용

for /f "tokens=*" %a in ('dir /b /s /a-d "C:\SPSData\UTDB1_Stage1"') do @move "%a" "C:\SPSData\UTDB1_Stage1" 

MOVE C:\SPSData\UTDB1_Stage1\ *\ * C:\SPSData\UTDB1_Stage1\ 
+1

"* 떨어 뜨린 * *"? "* CMD에서 작동하지만 [...] CMD에서 작동하지 않습니까?" 그 제목을 재고하고 싶을 수도 있습니다. – Clifford

+0

엄밀히 말하면 MS-DOS 명령이 아닙니다. * Windows 쉘 명령입니다. *; MS-DOS 서브 시스템이나'command.com'에 의존하지 않고 Win64에서 어떤 경우에도 MS-DOS 서브 시스템이 없다. 'cmd.exe'는 진정한 윈도우 실행 파일이며 MS-DOS와 관련이 없다는 점을 제외하고는 많은 명령과 명령 구문을 공유합니다. – Clifford

답변

2

, 당신은 다른 %와 접두사에 의해 % 변수 도입부를 탈출해야 - %%a%a 대체 :

for /f "tokens=*" %%a in ('dir /b /s /a-d "C:\SPSData\UTDB1_Stage1"') do @move "%%a" "C:\SPSData\UTDB1_Stage1" 

내가 그 호출을 상상 xp_cmdshell이 같은 요구를 통해 .

+0

고마워, 나는이 시간을 내가 얼마나 많은 시간을 보냈는지 부끄럽다. 진실하게 너는 나의 일/주를 만들었다. – Ryan

+0

@ 라이언 : 환영합니다. MS-DOS에서 이빨을 자르는 사람들에게만 친숙한 익숙한 지식입니다. – Clifford

관련 문제