フォルダーの名前をフォルダーの中にあるテキストファイルの内容により自動変更の方法有りますでしょうか?
現在の構成はこのようになっています。c:\temp\は適当につけてあります。
c:\temp\folder1\textfile.data
c:\temp\folder2\textfile.data
c:\temp\folder3\textfile.data
~
c:\temp\folder999\textfile.data
となっており、
変更は
c:\temp\folder1\textfile.data のファイルの中身はJSON形式になっており、その中に
"title":{"en":"English Name1","ja":"日本名1","int":"Internal Name1"},
の様に記述されている日本名をそのファイル名にしたいわけです。
c:\temp\folder999\textfile.dataの中身は普通のテキストファイルです。
結果的に
c:\temp\folder1\
は
c:\temp\日本名1\
となります。
そういうファイルやフォルダーが沢山あるわけですが、Windows Script, DOS batch script,phpでもなんでも良いのですが良い案は有りますでしょうか?
分かりにくければ補足します。
No.2
- 回答日時:
Windows Script でやるならば
c:\> cscript.exe hoge.wsf c:\temp
-- hoge.wsf
<?XML version="1.0" standalone="yes" ?>
<package><job id="qa8986367">
<runtime><usage>フォルダ名を配下のJSONファイルに従って変更します</usage></runtime>
<object id="fso" progid="Scripting.FileSystemObject" />
<script language="JavaScript"><![CDATA[(function(){_=0;
_ ; function forEach(obj, proc) { for (var c = new Enumerator(obj); !c.atEnd(); c.moveNext()) proc(c.item()); }
_ ; var a = WScript.arguments; if (a.count() < 1) { a.showUsage(); WScript.quit(1) }
_ ; var name = a.item(0);
_ ; var targetFolder = fso.getFolder(name);
_ ; var result = [];
_ ; forEach(targetFolder.subFolders, function(folder) {
_ , _ ; var titleJa = null;
_ , _ ; forEach(folder.files, function(file){
_ , _ , _ ; if (!(/\.data$/.test(file.name))) return; // 特定のファイル名
_ , _ , _ ; var st = file.openAsTextStream(1/*ForReading*/);
_ , _ , _ ; var text = st.readAll();
_ , _ , _ ; st.close(); if (!text) return; // テキストファイル
_ , _ , _ ; var data = eval("(" + text + ")");
_ , _ , _ ; if (!(data && typeof data == 'object')) return; // JSON 形式
_ , _ , _ ; if (data.title && data.title.ja) titleJa = data.title.ja;
_ , _ ; });
_ , _ ; if (!titleJa) return; // 変名対象外
_ , _ ; if (folder.name != titleJa) {
_ , _ , _ ; folder.name = titleJa;
_ , _ , _ ; result.push(folder.name + " -> " + titleJa);
_ , _ ; } else {
_ , _ , _ ; result.push(folder.name + " nochange"); // 既に変名済み
_ , _ ; }
_ ; });
_ ; WScript.echo(result.join('\n')); // 結果報告
})()]]></script>
</job></package>
簡単に書いたので JSON 解析を eval で行っていますが、
セキュリティを気にかける用途ならば、別途 JSON 処理ライブラリを盛り込んでください。
No.1ベストアンサー
- 回答日時:
>"title":{"en":"English Name1","ja":"日本名1","int":"Internal Name1"},
お書きのデータが1行に収まっているのであれば、バッチで出来ます。
cd /d C:\Temp
for /d %%A in (*) do for /f "tokens=4-5 delims=,:" %%B in (%%A\textfile.data) do if %%B == "ja" ren %%A %%C
そうで無ければ、Ruby/Perl/PHP等でJSONライブラリを使うのでしょうかね。
返信が遅れ大変失礼しております。
現在まだ成功はしておりませんが、個人的に一番近い物を提供して頂いていると思っておりますので、ベストアンサーに選ばせて頂きたく思います。お時間を取っていただき有り難うございます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Google Drive Googleドライブでのファイルの移動 2 2022/11/01 14:23
- その他(クラウドサービス・オンラインストレージ) Google ColabでGoogleドライブのサブフォルダにファイルを生成する方法 1 2022/10/31 17:37
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 6 2022/06/08 12:55
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2022/04/01 12:11
- C言語・C++・C# C言語 leetcode21 Merge Two Sorted Lists 2 2022/04/24 19:35
- Java 動かなくなったのでJavaソースを手直しお願いします。 2 2022/04/30 05:35
- Excel(エクセル) マクロのコードを、少しでも削って短くしたい 3 2022/08/30 07:46
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Windows 8 tempフォルダ全消ししていい? 3 2022/12/31 12:49
- PHP $filePath = './user_img/' . $file['name'];? 1 2022/12/10 07:29
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
javaScriptのコードの修正をお...
-
C#OpenCv V4にのエラーに関する...
-
翌月を取得するGASが分かりません
-
google apps scriptの終了のさせ方
-
シンプルなweb版スタンプラリー...
-
jqGridについて
-
なぜmatchメソッドがエラーにな...
-
VSCODE[Python]の設定について
-
ローカルにあるファイルを検索...
-
JavaScriptで、現在日時から100...
-
ページを読み込む前にリダイレ...
-
GASでundefinedエラーが出ます
-
商品コードを入力で、商品名、...
-
chromeでxmlをJSで表示するには?
-
テーブル内のテキストを取得したい
-
カラー表記の足し算プログラム
-
1日1回だけ引けるjavascriptお...
-
javascriptでテーブルに追加し...
-
並び替えの問題を作りたい
-
vb.netでの記述方法について 以...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
google apps scriptの終了のさせ方
-
C#OpenCv V4にのエラーに関する...
-
メールフォームの日付入力フォ...
-
GASでundefinedエラーが出ます
-
ジェネレーターの作り方
-
GASでGoogleフォームの自動返信...
-
なぜmatchメソッドがエラーにな...
-
翌月を取得するGASが分かりません
-
ローカルにあるファイルを検索...
-
HTMLで作った時報アプリが動き...
-
ASP.NETのコントロールの値をJa...
-
C# 演算 奇数と偶数 表現の仕方
-
html javascript リンク先アド...
-
gas スプレッドシートがアクテ...
-
javascriptでテーブルに追加し...
-
VSCODE[Python]の設定について
-
JavaScriptで決まった「時刻」...
-
ASP.NET MVCでObjectをjsに渡す
-
イベントが初めの一回しか起き...
-
jqGridについて
おすすめ情報