0

多くのUSBスティックにファイルをコピーする必要があります。したがって、私は短いアップルスクリプトを書こうとしています。私はapplescriptに精通していないので、誰かが私にいくつかのヒントを教えてくれるといいですね。

私がこれまでに持っているもの:

10か所のUSBハブ

スティックの名前を変更するための短いスクリプト。

今、私は接続されているすべてのスティックにファイルをコピーすることに固執しています:

property ignoredVolumes : {"Macintosh HD", "Time Machine Backups"}     

set myPath to ("Macintosh HD:Users:myusername:USB-Stick") as string
tell application "System Events"
set rootVolume to disk item (POSIX file "/Volumes" as text)
set allVolumes to name of every disk item of rootVolume
repeat with aVolume in allVolumes
    if aVolume is not in ignoredVolumes then
        set name of disk item (path of rootVolume & aVolume) to "Stickname"
    end if
end repeat
end tell

私が今やらなければならないことは、myPathから接続されているすべてのUSBスティックにコピーすることです。それらはすべて同じ名前を取得するため、名前の後ろに番号が付けられます(Stickname、Stickname 1、Stickname 2、...)

そのため、名前を変更したばかりのスティックにコピーコマンドをループに追加する必要があります。

誰かが私に助けをくれることを願っています。

4

3 に答える 3

1

次のようなことを試すことができます:

property ignoredVolumes : {"Macintosh HD", "Time Machine Backups", "iDisk", "net", "home"}
set myPath to (path to home folder as text) & "USB-Stick:"
tell application "System Events" to set theDisks to every disk
repeat with aDisk in theDisks
    if aDisk's name is not in ignoredVolumes then
        set diskPath to path of aDisk
        tell application "Finder" to duplicate myPath to diskPath with replacing
    end if
end repeat
于 2012-09-06T16:30:13.310 に答える
1

シェル スクリプトを使用すると、次のように簡単に実行できます。

do shell script "cp -R ~/USB-Stick/ /Volumes/Stickname*"
于 2012-09-06T12:08:11.867 に答える
0

ヒントをありがとう。次のコードで解決しました:

property ignoredVolumes : {"Macintosh HD", "Time Machine Backups"}   -- add as needed
property counter : 0
tell application "System Events"
set rootVolume to disk item (POSIX file "/Volumes" as text)
set allVolumes to name of every disk item of rootVolume
set StartTime to (get current date)
repeat with aVolume in allVolumes
    if aVolume is not in ignoredVolumes then
        set newName to "XXX" & counter as string
        log newName & " in Progress... "
        set name of disk item (path of rootVolume & aVolume) to newName
        set counter to counter + 1
        set scr to ("cp ~/USB-Stick/* /Volumes/" & newName)
        do shell script scr
        set name of disk item (path of rootVolume & newName) to "XXX"
        do shell script "diskutil unmount /Volumes/XXX"
        log newName & " finished."
    end if
end repeat
set endTime to (get current date)
set dur to (endTime - StartTime)
display dialog "Process took " & dur & "seconds."
end tell

これが同じ問題を抱えている他の人に役立つことを願っています。

表面的な問題が 1 つだけあります。2 つのシェル スクリプトを呼び出すと、エラー -10004 がスローされますが、それでも機能します。Tell Application「Finder」または「Terminal」を試してみましたが、エラーが残り、他のエラーによって追加されたため、元のソリューションに固執します。

敬具

于 2012-09-07T06:03:14.973 に答える