我正在尝试从Windows批处理文件运行以下perl代码,但收到错误The file name, directory name, or volume label syntax is incorrect.
该脚本在eclipse中运行良好。我的最终目标是使用Windows任务调度程序定期运行此perl脚本,从而从批处理文件运行它。
有没有其他方法可以实现我定期在Windows上运行perl脚本的目标?
我希望我的脚本可以跨平台运行,因为我也计划从mac运行它。
use strict;
use warnings;
use Data::Dumper;
use File::Find::Rule;
my $basedir="G:\/My_Workspaces";
my @exclude_dirs= qw(.foo);
#Fetching all the workspaces under base dir excluding the ones in @exclude_dirs
my @subdirs =
File::Find::Rule
->mindepth(1)
->maxdepth(1)
->not_name(@exclude_dirs)
->directory
->in($basedir);
#Formating list of workspaces by removing the full path
s{^\Q$basedir\E/}{} for @subdirs;
答案 0 :(得分:1)
如果这正是您文件的内容,那么您要求Windows的命令解释程序处理它无法执行的Perl源代码
如果您确实需要创建一个嵌入了Perl代码的批处理文件,那么请查看pl2bat
实用程序,它将完全执行该操作
像
这样的命令pl2bat myperl.pl
将创建一个文件myperl.bat
,该文件将在Windows命令行上运行,并在其中嵌入Perl源代码。但该文件是不可移植的,因为它使用的是Mac或Linux平台无法识别的Windows命令
答案 1 :(得分:1)
要么某些东西不知道如何执行Perl脚本,要么Perl脚本被perl
以外的其他东西解释。
这可能是由于您的文件关联问题(或缺少文件关联)。确定确切原因需要更多信息。
在任何情况下,以脚本作为参数执行perl
而不是直接执行脚本都可以解决问题。
换句话说,执行
perl script.pl
而不是
script.pl