HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2023
0218
nバッチファイルからHSPへのソース置き換えについてご質問1未解決


n

リンク

2023/2/18(Sat) 11:16:38|NO.99110

バッチファイルがあるディレクトリ以下のサブフォルダを、そのサブフォルダの中にあるテキストファイル名にリネームするという
処理を行っています。
これをHSPで実現したいのですがソースの置き換えをご教示頂けますでしょうか。

現在のバッチファイルにおける処理コマンドは下記の通りです

-----
rem @ECHO OFF
echo ファイル名置換処理を開始します
pause
dir /AD /S /B | find /c /v ""

for /f "usebackq" %%t in (`dir /AD /B ^| find /c /v ""`) do set COUNT_DIR=%%t

for /L %%e in (1,1,%COUNT_DIR%) do (
setlocal enabledelayedexpansion
cd /d %~dp0
set filename=
for /d %%f in ("新しいフォルダ*") do (
set folder=%%f
set folder=!folder: =!
echo %%f
cd %%f
for %%l in ("*.txt") do (
cd ..
set filename=%%l
set filename=!filename: =!
move %%f !filename:~0,-4!
cd %%f
)
cd..
)


)
pause



この記事に返信する


GENKI

リンク

2023/2/18(Sat) 15:38:21|NO.99112

バッチは手軽で便利な反面、簡単な処理でも読みにくくて書きにくいコードになってしまって地獄ですよね。
HSP3の場合はこんな感じでしょうか。


; HSP3にはファイル名変更の命令がないので、事前に追加しておく。 #uselib "msvcrt" #func rename "rename" str, str ; 確認 mes "現在のフォルダ:" + dir_cur dircur = dir_cur ; フォルダリスト取得 notesel flist dirlist flist, "新しいフォルダ*", 5 folder_count = notemax sdim folder, 64, folder_count idx = 0 repeat folder_count noteget folder(cnt), cnt ;mes "index" + cnt + "=" + folder(cnt) loop ; 名前変更 repeat folder_count chdir dircur + "\\" + folder(cnt) ; テキストファイル名を1個取り出す notesel flist dirlist flist, "*.txt", 1 if notemax = 0 : continue noteget txtname, 0 mes txtname ; フォルダ名変更 mes dircur + "\\" + folder(cnt) mes "↓" mes dircur + "\\" + txtname chdir dircur ; 名前を変更したいフォルダがカレントだと失敗する。 rename dircur + "\\" + folder(cnt), dircur + "\\" + txtname loop

PowerShellがいいらしいけど使ったことない。(´・ω・`)



ONION software Copyright 1997-2023(c) All rights reserved.