†REXXのどろぬま†

オブジェクトのリネーム

作成開始日 2007.09.10
最終更新日 2007.09.10

通常、ファイル名の変更にはREN(RENAME)コマンドを使うが、RENではオブジェクト名までは変わらない。迂闊にRENを使うと、ファイル名とオブジェクト名が食い違ってしまう。オブジェクト名を変更するには、REXXのSysSetObjectData(ファイル名,"title=新オブジェクト名")を使う。この方法ならば、オブジェクト名とファイル名が同時に変更される。

たとえば、ロング名を持つJpeg画像のファイル名およびオブジェクト名を、右から8文字に切り詰めるには、次のようにする。

/* オブジェクト名変更 */
Call RxFuncAdd 'SysLoadFuncs', 'RexxUtil', 'SysLoadFuncs'
Call SysLoadFuncs

rc=SysFileTree('*.jpg',file,'OF');
Do n=1 to file.0
  fname=filespec('N',file.n);
  parse var fname body '.' ext
  newbody=right(body,8)	/* ロング名を右から8文字に切り詰める */
  newfname=newbody||'.'||ext;
  say newfname
  dataStr='title='||newfname
  rc=SysSetObjectData(file.n,dataStr);
End;
ただし、この方法は目茶苦茶時間が掛かる。何をやっているのか知らないが…。で、外道な方法としては、RENで物理名を変えて、eautil /sで拡張属性を削除する、という方法がよいかな。


【REXXのどろぬま目次】 【ホーム】