質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.31%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

2回答

585閲覧

各PCに入っている日本語名のファイルをスクリプトで削除したい

hatsuzo

総合スコア56

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

VBScript

VBScript(Visual Basic Scripting Edition)はMicrosftが開発したスクリプト言語であり、Visual Basicのサブセットです。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

1クリップ

投稿2023/12/12 04:24

編集2023/12/12 04:41

実現したいこと

ADのログオンスクリプトにより、スタートアップフォルダに日本語名のショートカットを作成してしまい、
ログオンスクリプトを使って削除したいのですが、文字コードの問題で識別ができず、削除できなくて困っております。
愚かな質問ですが、識者のアドバイスを頂ければと思います。

前提

管理者権限がないPCも多い。また、Powershellも実行許可をしておらず、管理者権限を与えても動作しないので、スクリプトかバッチの範疇でなんとかならないか調べています。

発生している問題・エラーメッセージ

起動するたびにスタートアップに入れたショートカットに紐付くバッチファイルが動き、ダイアログが都度表示される。

該当のソースコード

VBScript

1Option Explicit 2 3Dim objShell, objFSO, objShortcut, desktopPath, registryKey, startupFolder, scriptFileName 4 5Set objShell = CreateObject("WScript.Shell") 6Set objFSO = CreateObject("Scripting.FileSystemObject") 7 8' 削除するスクリプトファイルの名前 9startupFolder = objShell.SpecialFolders("Startup") 10scriptFileName = "証明書.lnk" 11 12' フォルダが存在するか確認 13If objFSO.FolderExists(startupFolder) Then 14 ' フォルダ内のファイルを取得 15 Dim folder, file 16 Set folder = objFSO.GetFolder(startupFolder) 17 ' 各ファイルを確認して指定したスクリプトファイルを削除 18 For Each file In folder.Files 19 If StrComp(file.Name, scriptFileName, vbTextCompare) = 0 Then 20 ' スクリプトファイルが見つかった場合、削除 21' objFSO.DeleteFile file.Path 22 Exit For 23 End If 24 Next 25Else 26End If 27

試したこと

バッチファイルで、フルパス指定して、
del C:\Users\myname\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\証明書.lnk
としましたが、バッチファイルでも同じことでファイルが見つからない、と出ます。
chcp 65001
と入れると文字化けはしなくなりますが、削除は出来ないようです。

補足情報(FW/ツールのバージョンなど)

Windows10

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

簡単には、
del C:\Users\myname\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\*.lnk
で、ショートカット全部削除して、あとで必要な物を作り直すとか。
と思ったけど、1台じゃないんですね。
あるいは、

CMD

1pushd "%APPDATA%\Microsoft\Windows\Start Menu\Programs\Startup" 2mkdir %TEMP%\BACKUP 3for %%F in (残すショートカットファイル名をここに列挙する foo.lnk とか) do move "%%~F" %TEMP%\BACKUP 4rem 列挙しなかったショートカットを削除 5del *.lnk 6move %TEMP%\BACKUP\*.lnk . 7rmdir %TEMP%\BACKUP

投稿2023/12/12 06:37

otn

総合スコア86316

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hatsuzo

2023/12/13 04:34

コメント有難うございました。 同じような処理を行いましたが、上記でいうと列記する除外ファイルのように、全角文字をバッチに記述すると文字化けの対象になってしまいました。 全角文字はファイル名に使わないほうが無難ですね。 もともと、デスクトップに置くつもりで作ったショートカットなので、全角文字でファイルを作ってしまいました。不覚でした。 なんとか無理やりに解決できましたので、自己レスに上げさせて頂きました。 どうも有難うございました。
otn

2023/12/13 11:35

なるほど。「普通じゃないファイル作成方法で、変なコードのファイル名を1つだけ作ってしまった」という事態を想定していましたので、その1つ以外は問題なく操作できる物と思っていました。 > 全角文字はファイル名に使わないほうが無難ですね。 日本語のファイル名はごく普通です。たまに海外製のソフトで、対応していない物もあるかもしれませんが、普通に使っている範囲では問題ありません。(ファイル名じゃなくてディレクトリー名(フォルダー名)の場合はさらに対応不十分なソフトが多い) > Windowsのバッチファイルは、デフォルトだと、utf-8で作られてしまいますので、 それは変です。バッチファイルは普通はSJISで作ります。 デフォルトがUTF-8のエディターを何の設定もせずに使ったのですかね。 例えば、VSCodeなら「拡張子BATはsjis」というような設定が出来ます。 Windows標準のメモ帳だとそういう設定は多分出来ないので、新規作成ファイルは、 保存時に指定するしかないでしょうね。 また、日本製のエディターだとデフォルトがsjisというケースも多いでしょう。 中味に日本語入りのバッチファイルをどうしてもUTF-8で作らざるを得ない場合は、先頭に > chcp 65001 で出来るはずですが、出来ないというのは別の原因があるのでしょう。 現象が書いてないのでなんとも言えないところです。発生している現象を見たまま書きましょう。 > 削除は出来ないようです。 削除は「発生している現象」じゃなくて「発生しなかった現象」ですね。 「~~は起こらなかった」という記述をいくつ読んでも何が起こったのか不明です。
guest

0

自己解決

正しい解決策かどうか判りませんが、
Windowsのバッチファイルは、デフォルトだと、utf-8で作られてしまいますので、
ファイルをsjisにして作り、その状態で、全角のファイル名でフルパスを記述したら、なんとか消せました。

既存の処理に付けくわえる必要があったので、他の部分の検証をするのが面倒なため、
その部分だけを
call xxxx.bat
として逐次処理にしました。

どうもお騒がせしました。

投稿2023/12/13 04:38

hatsuzo

総合スコア56

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.31%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問