У меня есть пакетный файл в папке на диске Google на моем диске D. Моя идея состояла в том, чтобы связать его на рабочем столе и динамически указывать на папку, чтобы мне не приходилось каждый раз переходить к папке. Имя папки увеличивается в зависимости от количества папок в другом каталоге. Как это:

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

Эта папка содержит 57 папок старых резервных копий с именем 2017Project_1 до 2017Project_57


D:\Google Drive\Projects\2017Project\

Содержит папку с именем 2017Project_58


Это текущая версия 2017Project, над которой я работаю, и где я хочу, чтобы мой ярлык указывал. Поэтому, если я перенесу эту 58-ю резервную копию в OldBackups и заменим ее на 2017Project_59, я все равно смогу очень быстро туда перейти, просто запустив командный файл с помощью ярлыка.

Пакетный файл прекрасно работает. Он подсчитывает количество папок в OldBackups, увеличивает число на одну и затем перемещается к нему. Это выглядит так:

@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), он не работает.

0