Пакетный файл> Javascript> WinSCP> Проверить, существует ли файл

У меня есть пакетный файл, который запустит файл .js, который через WinSCP проверяет, существует ли файл, и возвращает его в пакетный файл, если он существует.

Проблема в том, что она всегда возвращается не найдена, и я не могу понять, почему. Я не уверен, как использовать подстановочный знак в этом сценарии.

Пакетный файл выглядит так:

cscript /nologo file.js
if errorlevel 1 goto notfound
exit
:notfound
(another script to copy a file over)

Только один файл может существовать на сервере одновременно. Таким образом, каждые десять минут этот пакетный файл будет запускаться, проверять, есть ли файл, если нет, копировать один.

Файл.js:

// Configuration

// Remote file search for
var FILEPATH = "../filepath/TSS*";

// Session to connect to
var SESSION = "[email protected]";

// Path to winscp.com
var WINSCP = "c:\\program files (x86)\\winscp\\winscp.com";

var filesys = WScript.CreateObject("Scripting.FileSystemObject");
var shell = WScript.CreateObject("WScript.Shell");

var logfilepath = filesys.GetSpecialFolder(2) + "\\" + filesys.GetTempName() + ".xml";

var p = FILEPATH.lastIndexOf('/');
var path = FILEPATH.substring(0, p);
var filename = FILEPATH.substring(p + 1);

var exec;

// run winscp to check for file existence
exec = shell.Exec("\"" + WINSCP + "\" /log=\"" + logfilepath + "\"");
exec.StdIn.Write(
"option batch abort\n" +
"open \"" + SESSION + "\"\n" +
"ls \"" + path + "\"\n" +
"exit\n");

// wait until the script finishes
while (exec.Status == 0)
{
WScript.Sleep(100);
WScript.Echo(exec.StdOut.ReadAll());
}

if (exec.ExitCode != 0)
{
WScript.Echo("Error checking for file existence");
WScript.Quit(1);
}

// look for log file
var logfile = filesys.GetFile(logfilepath);

if (logfile == null)
{
WScript.Echo("Cannot find log file");
WScript.Quit(1);
}

// parse XML log file
var doc = new ActiveXObject("MSXML2.DOMDocument");
doc.async = false;
doc.load(logfilepath);

doc.setProperty("SelectionNamespaces", 
"xmlns:w='http://winscp.net/schema/session/1.0'");

var nodes = doc.selectNodes("//w:file/w:filename[@value='" + filename + "']");

if (nodes.length > 0)
{
WScript.Echo("File found");
// signalize file existence to calling process;
// you can also continue with processing (e.g. downloading the file)
// directly from the script here
WScript.Quit(0);
}
else
{
WScript.Echo("File not found");
WScript.Quit(1);
}

В строке 4 написано:

var FILEPATH = "../filepath/TSS*";

Думаю, эта звезда вызывает у меня проблемы. Мне нужно найти файл, который НАЧИНАЕТСЯ С TSS, но в конце у него будет метка времени. Поэтому мне нужно просто использовать подстановочный знак после TSS.

Поэтому мне нужна помощь: заставить этот процесс возвращать значение true, если с TSS существует какой-либо файл

Любая помощь приветствуется.

РЕДАКТИРОВАТЬ:

var nodes = doc.selectNodes("//w:file/w:filename[starts-with(@value, 'TSS')]");

Этот код, кажется, не работает. Если бы этот код работал, похоже, он решил бы все мои проблемы.

Ответы на вопрос(2)

Ваш ответ на вопрос