2011-03-16 2 views
0

코드를 약간 재 작성하려고했지만 스크립팅 언어가 너무 이상합니다 ... 누군가 재 작성을 도와 줄 수 있습니까? 심지어 현재 파일 경로에서 현재 폴더 경로를 가져올 수 없습니다 ... Windows .bat이고 내 Mac에서 실행하고 싶습니다. 감사합니다. 스크립트 언어를 사용하는 스크립트의 일부분 만이 for 루프 때문에Windows 재 작성 .bat을 AppleScript 또는 UNIX로 다시 작성

@ECHO off 

SET CVICENIA=cvicenia 
SET DST_CVICENIA=web 
SET CONVERT_UTIL=java -cp . transform student.xsl 

REM -------------------- REMOVE DESTINATION DIRS --------------------- 

rmdir /S /Q %DST_CVICENIA% 

REM -------------------- CVICENIA --------------------- 

mkdir %DST_CVICENIA% 

xcopy /I style %DST_CVICENIA%\style 

FOR /d %%I IN (%CVICENIA%\*) DO (
    mkdir %DST_CVICENIA%\%%~nI 
    copy %CVICENIA%\%%~nI %DST_CVICENIA%\%%~nI\ 
    %CONVERT_UTIL% %CVICENIA%\%%~nI\index.xml %DST_CVICENIA%\%%~nI\index.html 
    del %DST_CVICENIA%\%%~nI\index.xml 
) 

REM copy %CVICENIA%\index.html %DST_CVICENIA%\ 

답변

1

내가 나 자신했다 ...

on run 

    display dialog "Wait for the end" 

    set CURRENT_DIR to POSIX path of (do shell script "dirname " & POSIX path of ((path to me) as Unicode text)) & "/" as string 

    set CONVERT_UTIL to "java -cp . transform student.xsl" 
    set DST_CVICENIA to CURRENT_DIR & "web" 
    set CVICENIA to CURRENT_DIR & "cvicenia" 

    tell application "Finder" 
     try 
      delete folder (DST_CVICENIA as POSIX file) 
     end try 
     make new folder at (CURRENT_DIR as POSIX file) with properties {name:"web"} 
     copy folder (CURRENT_DIR & "/style" as POSIX file) to folder (DST_CVICENIA as POSIX file) 

     set CVICENIA_LIST to get name of folders of folder (CVICENIA as POSIX file) 
     repeat with I in CVICENIA_LIST 

      make new folder at (DST_CVICENIA as POSIX file) with properties {name:I} 

      set DST_CVICENIA_I to DST_CVICENIA & "/" & I 
      set CVICENIA_I to CVICENIA & "/" & I 

      copy items of folder (CVICENIA_I as POSIX file) to folder (DST_CVICENIA_I as POSIX file) 

      do shell script "cd " & CURRENT_DIR & "\n" & CONVERT_UTIL & " " & CVICENIA_I & "/index.xml " & DST_CVICENIA_I & "/index.html" 

      delete item (DST_CVICENIA_I & "/index.xml" as POSIX file) 

     end repeat 

    end tell 

    display dialog "End" 

end run 
+0

자신의 대답에 동의합니다. – Chuck

0

그래서 이것은 스크립트 언어 자체에 대해 정말 아니다. 당신은 아마 find -depth 1 명령으로 그것을 대체 할 수 있지만, 떠들썩한 파티에서 for 루프는 다음과 같습니다

for i in myFolder/*; do 
    #blah 
    #blah 
done 

당신이 정말이 알아낼 필요하면 bash는 mkdirxcopy 같은 것들을의 기능을 대체하는 방법이다 스크립트. 이를 위해서는이 스크립트에서 사용하는 다양한 플래그가하는 일과 옵션에서의 동작을 어떻게 모방 할 수 있는지 이해해야합니다. mkdir, cprm. 질문은 대답이되도록