倍频程'input'功能,运行批处理文件



我正在使用一个批处理文件:

@echo off
C:OctaveOctave-4.4.1octave.vbs --force-gui --eval batchTest("'%~dp0'")
cmd /c

运行Octave脚本

function [] = batchTest(fPath)
disp(fPath);
cd(fPath);
optionNumber = input('Choose option 1 or 2:  ');
if optionNumber == 1            
fName = input('Input file description:  ',"s");
filename = [fName ".xlsx"];
xls = xlsopen(filename,1);       % <-- THIS DOES NOT WORK, PRODUCES "FILE POINTER PRESERVED MESSAGE"
xls = oct2xls({"OutputData"},xls,1,"A1");
xlsclose(xls);
end
if optionNumber == 2            
filename = "TestFile.xlsx";
xls = xlsopen(filename,1);           %  <-- THIS WORKS AS EXPECTED
xls = oct2xls({"OutputData"},xls,1,"A1");
xlsclose(xls);
end

在批处理文件的目录中创建Excel文件。

选项号1产生一个";保留文件指针";警告,并且不会创建Excel文件。我似乎不能使用任何由Octave的"input"函数创建的字符串,无论是全部还是部分。用";。xlsx";将该变量传递给"xlopen"函数没有帮助。选项2工作得很好,但我需要生成多个文件,所以"fName";描述符很重要。我已经尝试将SETLOCAL ENABLEDELAYEDEXPANSION添加到批处理文件中。我还尝试了一种变通方法,我使用了选项2,然后添加了

rename("TestFile.xlsx",[fName ".xlsx"])

八度音阶脚本,但这产生了一个";无效输入";"rename"函数中的错误,因此它也不喜欢"input"创建的字符串。问题仅在于"xlopen"one_answers"rename"函数;"input"函数可以很好地选择选项编号。

从Octave命令行直接执行"batchTest(pwd("时,任一选项都有效。该问题仅在从批处理文件执行时出现。任何建议都将不胜感激。

问题听起来是,当您创建字符串时,您包含的转义字符会打乱文件名。

从评论中的讨论来看,字符串中似乎包含了回车符,导致文件名错误。

目前尚不清楚为什么只有在从批处理文件运行时才会出现这种情况,但作为一种变通方法,您可以通过使用strtrim预处理字符串输入以删除任何不需要的空白来确保删除回车。

最新更新