Perl:为什么我会收到错误"文件名,目录名或卷标语法不正确。"

时间:2016-02-26 16:04:47

标签: windows perl batch-file

我正在尝试从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;

2 个答案:

答案 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