调用 VBScript 时在批处理脚本中设置参数

     2023-02-16     180

关键词:

【中文标题】调用 VBScript 时在批处理脚本中设置参数【英文标题】:Setting parameters in batch script while calling VBScript 【发布时间】:2020-06-05 20:56:30 【问题描述】:

我有一个 bat 文件,它调用转换文件编码的 vbscript。 在通过设置文件的一部分运行代码时,它可以正常工作,但是当我尝试将多个文件作为参数传递时,我收到以下错误: microsoft vbscript 运行时错误:无效或不合格的引用

你可以在 run.cmd 下面看到我的批处理脚本:

@Echo off
SET CHEMINDAT = C:\Users\myuser\Desktop\TRY\DATA_TY\
SET CHEMINTMP = C:\Users\myuser\Desktop\TRY\TMP\

echo %DATE% %TIME% Debut de traitement.

dir %CHEMINDAT%* /a:-d/b > %CHEMINTMP%-liste.txt 2

FOR /F "eol=; tokens=1 delims=, " %%i in (%CHEMINTMP%-liste.txt) do (

echo %%i > %CHEMINTMP%Fichier_en_cours.txt
echo %DATE% %TIME% Traitement du fichier : %%i

cscript //NoLogo C:\Users\myuser\Desktop\TRY\\Scripts\unix2dos_7.vbs %%i

)
pause
exit /b 1

您将在下面找到我的 VBScript 'unix2dos_7.vbs':

Const adTypeBinary          = 1
Const adTypeText            = 2
Const adSaveCreateNotExist  = 1
Const adSaveCreateOverWrite = 2
Const adWriteLine = 1
Const adReadLine = -2
Const adLF = 10
Const adCR = 13
Const adCRLF = -1
Set streamUTF8 = CreateObject("ADODB.Stream")
Set streamASCII = CreateObject("ADODB.Stream")

Dim args
set args = Wscript.arguments
strOutOne= args(0)

streamUTF8.Open
streamUTF8.Type = adTypeText
streamUTF8.LineSeparator = adCRLF
streamUTF8.Charset = "UTF-8"
streamUTF8.LoadFromFile strOutOne

streamASCII.Open
streamASCII.Type = adTypeText
streamASCII.LineSeparator = adCRLF
streamASCII.CharSet = "us-ascii"

Do Until streamUTF8.EOS
streamASCII.WriteText streamUTF8.ReadText(adReadLine), adWriteLine
Loop
streamASCII.SaveToFile "myfileConverted.txt", adSaveCreateOverWrite

我还想用新文件替换原始文件,而不是创建一个新文件“myfileConverted.txt”。这样我就没有两次相同的文档了

有人可以帮忙吗?

提前致谢

【问题讨论】:

我要问的第一个问题是,为什么?我还建议你看看这个previous question,它是cmets,它是答案,它利用powershell,而不是vbscript 如果您正在处理长文件名,那么您可能需要在调用 .vbs 时在 .cmd 文件中用双引号 (") 引用 (") %%i;否则,您的 .vbs 只会得到路径的第一部分。另外,在 TRY 之后去掉你的双反斜杠 (\)。或者,你可能需要调用 32 位版本的 cscript.exe。最后,一定要.Close你的 ADODB。 .vbs 脚本中的流对象。C:\Windows\SysWOW64\cscript.exe //NoLogo C:\Users\myuser\Desktop\TRY\Scripts\unix2dos_7.vbs "%%i" 【参考方案1】:

我能够做我想做的事,你会在下面看到代码: 批号:

@Echo off
SET CHEMINDAT = C:\Desktop\try\script_try_2\data\
SET CHEMINTMP = C:\\Desktop\try\TMP\

echo %DATE% %TIME% Debut de traitement.
dir %CHEMINDAT%* /a:-d/b > %CHEMINTMP%-liste.txt 

FOR /F "eol=; tokens=1 delims=, " %%i in (%CHEMINTMP%-liste.txt) do (

echo %%i > %CHEMINTMP%Fichier_en_cours.txt
echo %DATE% %TIME% Traitement du fichier : %%i


cscript //NoLogo C:\Desktop\try\script_try_2\unix2dos_7_2.vbs "%%i"
)

pause
exit /b 1

我的 vbScript:

Const adTypeBinary          = 1
Const adTypeText            = 2
Const adSaveCreateNotExist  = 1
Const adSaveCreateOverWrite = 2
Const adWriteLine = 1
Const adReadLine = -2
Const adLF = 10
Const adCR = 13
Const adCRLF = -1
Set streamUTF8 = CreateObject("ADODB.Stream")
Set streamASCII = CreateObject("ADODB.Stream")

set args = Wscript.arguments
strOutOne= args(0)

streamUTF8.Open
streamUTF8.Type = adTypeText
streamUTF8.LineSeparator = adCRLF
streamUTF8.Charset = "UTF-8"
streamUTF8.LoadFromFile = strOutOne

streamASCII.Open
streamASCII.Type = adTypeText
streamASCII.LineSeparator = adCRLF
streamASCII.CharSet = "us-ascii"

Do Until streamUTF8.EOS
streamASCII.WriteText streamUTF8.ReadText(adReadLine), adWriteLine
Loop
streamASCII.SaveToFile(strOutOne), adSaveCreateOverWrite

【讨论】:

在脚本中设置 MSMQ 队列的权限

...中设置MSMQ队列权限的指示,最好是PowerShell,但我会使用VBscript【问题讨论】:【参考方案1】:这个问题的当前(2015年)答案。例子:New-MsmqQueue-Name"MyQueue"-QueueTyp 查看详情

vbscript在vbscript中设置,获取和清除clipboard文本。(代码片段)

查看详情

如何从 TeamCity 构建配置中设置 PowerShell 开关参数

...关(布尔)参数的PowerShell脚本,我想从TeamCity构建步骤中调用它。我希望根据TeamCity构建参数、配置参数来设置开关的值(真/假)。所 查看详情

在视图中调用脚本时设置超时?或在脚本中设置有效超时?

】在视图中调用脚本时设置超时?或在脚本中设置有效超时?【英文标题】:settimeoutoncallingascriptonview?orsettinganeffectivetimeoutinsidescript?【发布时间】:2018-07-2621:32:41【问题描述】:通过一些努力,我部分实现了我想要的,但如果... 查看详情

在 Unix shell 脚本中设置退出代码

...t2.sh我的逻辑应该运行test.sh处理文件,即“文件成功”并调用test1.sh脚本。它执行其他else条件时不应运行test1.sh脚本。即“文件未成功”、“目录中不 查看详情

从 VBScript 调用任何带有俄语名称的文件/脚本失败

】从VBScript调用任何带有俄语名称的文件/脚本失败【英文标题】:Callinganyfile/scriptwithRussiannamefromVBScriptfails【发布时间】:2011-04-2609:56:12【问题描述】:我正在从utf-8编码的XML文件中读取文件/脚本的名称。然后将其传递给VBScript... 查看详情

如何在批处理脚本的 for /f 循环中从输出中设置多个变量? [复制]

】如何在批处理脚本的for/f循环中从输出中设置多个变量?[复制]【英文标题】:Howtosetmultiplevariablesfromoutputinfor/floopinbatchscript?[duplicate]【发布时间】:2021-01-1705:08:55【问题描述】:我正在尝试编写脚本,但我真的不擅长编写批处... 查看详情

如何在页面加载时在 HtmlEditorExtender 中设置内容

】如何在页面加载时在HtmlEditorExtender中设置内容【英文标题】:HowtosetcontentinsideHtmlEditorExtenderonpageload【发布时间】:2015-07-2913:02:01【问题描述】:我想在HtmlEditorExtender内的PageLoad上设置内容<asp:TextBoxrunat="server"ID="txt_plbNtCom"Heigh... 查看详情

如何在配置文件中定义的 PowerShell 脚本中设置环境变量?

...:我有一个简单的批量偏好系统。bat将.ini重命名为.bat并调用它。.ini中的变量或选项将以这种方式初始化。所以我可以用它来创建一个多语言的批处 查看详情

加载 WPF 时在 ListBox 中设置选定项的样式

】加载WPF时在ListBox中设置选定项的样式【英文标题】:StyleSelectedIteminListBoxuponLoadWPF【发布时间】:2022-01-0201:38:09【问题描述】:我有一个ListBox,例如:<ListBox//otherstuffItemsSource="BindingViewModels,UpdateSourceTrigger=PropertyChanged"SelectedI... 查看详情

禁用时在某个活动中设置新的ActionBar

】禁用时在某个活动中设置新的ActionBar【英文标题】:SettingnewActionBarinacertainactivitywhenitwasdisabled【发布时间】:2017-02-2512:35:30【问题描述】:我是Android开发新手,如果这是一个愚蠢的问题,我深表歉意。我已经在AndroidManifest.xml... 查看详情

添加新列时在alembic中设置列顺序

】添加新列时在alembic中设置列顺序【英文标题】:Setcolumnorderinalembicwhenaddinganewcolumn【发布时间】:2018-11-0903:29:45【问题描述】:我正在努力寻找一种干净的方法(没有原始SQL)来设置alembic中的列顺序。例如,我想在\'id\'列之后... 查看详情

准备继续时在目标视图控制器中设置选择器

】准备继续时在目标视图控制器中设置选择器【英文标题】:settingaselectorinadestinationviewcontrollerwhenpreparingtosegue【发布时间】:2015-08-2115:45:33【问题描述】:我想从viewControllerA移动到viewControllerB并在我的prepareForSegue中分配viewControl... 查看详情

键盘显示时在 UIViewController 中设置 Tableview y 位置

】键盘显示时在UIViewController中设置Tableviewy位置【英文标题】:SetTableviewy-positioninaUIViewControllerwhenKeyboardshows【发布时间】:2015-01-0413:17:27【问题描述】:我在Main.Storyboard中创建的UIViewController中有一个TableView。初始化时Y位置为0。... 查看详情

java示例代码_点击按钮事件时在对话框中设置图标(图像)

java示例代码_点击按钮事件时在对话框中设置图标(图像) 查看详情

从 UserControls 使用时在 wpf 中设置制表符顺序?

】从UserControls使用时在wpf中设置制表符顺序?【英文标题】:SettingtaborderinwpfwhenusefromUserControls?【发布时间】:2011-12-1818:59:30【问题描述】:我有一个这样的用户控件:<UserControlx:Class="MySample.customtextbox"xmlns="http://schemas.microsoft.... 查看详情

如何在 API 调用中设置完成处理程序 - Swift 5

】如何在API调用中设置完成处理程序-Swift5【英文标题】:HowtosetupcompletionhandlersinAPICall-Swift5【发布时间】:2021-11-2421:40:04【问题描述】:我遇到了问题。我为返回User对象的API调用提供服务,并且API调用工作正常,它返回User对象... 查看详情

单击特定按钮时在数据库中设置颜色

】单击特定按钮时在数据库中设置颜色【英文标题】:SetColorinDataBasewhenspecificbuttonclicked【发布时间】:2016-10-3105:52:55【问题描述】:我有两个按钮:一个在点击时设置颜色为红色,另一个设置为绿色。我想将该值存储在单击哪... 查看详情