VBScriptでフォルダを数えるためにバッチファイルを実行すると、System32でフォルダ数が実行されます。


0

DドライブのGoogleドライブフォルダにバッチファイルがあります。私の考えは、デスクトップ上でリンクし、動的にフォルダを指すようにして、毎回フォルダに移動する必要がないようにすることでした。フォルダの名前は、別のディレクトリにあるフォルダの数に基づいて増えます。このような:

D:\Google Drive\Projects\2017Project\OldBackups\

このフォルダには、57個の古いバックアップフォルダがあります。 2017Project_1 2017年プロジェクト57


D:\Google Drive\Projects\2017Project\

というフォルダが含まれています 2017年プロジェクト58


それはの現在のバージョンです 2017年プロジェクト 私が取り組んでいること、それが私の近道が指すところです。その58番目のバックアップをOldBackupsに移動して、 2017年プロジェクト59 、ショートカットからバッチファイルを実行するだけで、非常にすばやくナビゲートできます。

バッチファイルはとてもうまくいきます。フォルダの数を数えます。 OldBackups 、番号を1つ増やしてからナビゲートします。それはこのように見えます:

@echo off &setlocal
for /d %%j in (*.*) do set /a count+=1
SET /A num=count+1
set NEW_PATH=%~dp0..\2017Project_%num%
%SystemRoot%\explorer.exe %NEW_PATH%
endlocal

バッチファイルは中に置かれます OldBackups

そのため、ショートカットを使用するたびにコマンドプロンプトウィンドウが表示されないように、非表示のバッチファイルを実行するためにVBScriptを使用したいと思いました。

VBScriptは次のようになります。

set shell=CreateObject("Shell.Application")
shell.ShellExecute "CountFiles.bat",,"D:\Google 
Drive\Projects\2017Project\Old Backups\", "runas", 0
set shell=nothing 

他のバッチファイルが隠されて実行されていることを確認するのに役立ちます。しかし、これではうまくいきません。代わりに、フォルダ数198を返してからエクスプローラをマイドキュメントに開きます。チェックして、D:\ Google Driveなどのフォルダを数える代わりに、C:\ Windows \ System32 \内のフォルダの数を数えています。

OldBackupsの内部から直接実行した場合、バッチファイルは意図したとおりに機能しますが、VBScript(OldBackupsにも保存されている)から実行した場合は機能しません。


あなたのバッチファイルコードは私には論理的に意味がありません。入れ子になった2つの目的がわかりません FOR /D コマンド。意味がありません。また、あなたの両方 CALL コマンドは不要です。彼らはただあるべきです echo %%j そして echo %count% folder(s^)。この行にパーセント記号もありません。 SET /A num=%count+1 しかし、あなたはそれを削除することができます: SET /A num=count+1
Squashman

を使う RUNAS 動詞として、作業ディレクトリはsystem32になります。昇格した権限でスクリプトを実行する必要がある理由はありますか?
Squashman

と言っています私が隠していた以前のバッチファイルには昇格された権限が必要でしたが、これは必要ありません。一定!
Gryff David

@Squashmanあなたは答えとしてそれを投稿するべきです
Twisty Impersonator
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.