このブログ見ていて、もし来られる方がいれば連絡ください!
はい、本題が終わったので、SASの話もちらっと。
Windows環境でコマンドプロンプト使いこなしてると、色々できていいですよね。
僕はさっぱりです。
なんかやりたい時はググってSASのxコマンドにペタッと貼って実行してます。
その中で、ちょっと変わった処理だけど意外と使うな~ってものをご紹介します。
それは、指定したフォルダ内のファイルは無視して、フォルダ構造のみをコピーするというものです。
例えば、ルーチンでやる業務で、前回と同じフォルダが欲しいけど、中に入ってるファイルは別に要らないよというケースです。
一応マクロにしていますが、適当なのでよしなにカスタマイズしてください
/*-----------------------------------------------------------
フォルダ構造のみコピー
※コピー元のフォルダ内のファイルは無視して構造のみをコピー
------------------------------------------------------------*/
%macro folder_emp_copy(basein=,copyout=);
options noxwait noxsync;
%unquote(%bquote(x 'xcopy /t /e "&basein." "©out."'));
%mend folder_emp_copy;
/*実行例:デスクトップのTEST1フォルダ内のフォルダ構造をTEST2フォルダ内にコピー*/
%folder_emp_copy(basein=C:\Users\SASYAMA\Desktop\TEST1,
copyout=C:\Users\SASYAMA\Desktop\TEST2)
ついでに、単純に1ファイルをコピーしてリネームするのも
/*--------------------------------------
単一ファイルのリネームコピー
---------------------------------------*/
%macro filecopy(basein=,copyout=);
options noxwait noxsync;
%unquote(%bquote(x 'copy "&basein" "©out"'));
%mend filecopy;
/*実行例:AA.txtをBB.txtという名前にリネームしてコピー*/
%filecopy(basein=C:\Users\SASYAMA\Desktop\TEST1\AA.txt,
copyout=C:\Users\SASYAMA\Desktop\TEST2\BB.txt)
フォルダ構造のみコピー機能はいつかはと思っていたのですが、フォルダ毎コピーして中身を消してとりあえず前に進んでいました。急場しのぎでしたので、なんか幸せです。
返信削除ひとつ質問ですが、マクロを実行したところ「・・・は受け側のファイル名ですか、またはディレクトリー名ですか」と聞いてきます。(Windows 7)
これを出さなくするには、どうすればいいのでしょう?
そうですね例のマクロは、コピー先について、記事の例でいうとTEST2が存在している状況で使うことを想定したマクロなんですね。なので、copyout=の最下層がない状態で実行すると、そうなると思います。なので、最下層に存在しているフォルダを指定すれば、恐らくでないはずです。
返信削除なるほど。
返信削除ということで、前に
%unquote(%bquote(x 'mkdir "©out."'));
を追加して先にフォルダを作成することで、回避することができました。
ありがとうございました!