【问题标题】:Set File Paths - Perl Script设置文件路径 - Perl 脚本
【发布时间】:2016-01-08 18:46:53
【问题描述】:

我要做的是取出 bcp 日志文件(日志文件夹)并将其移动到具有当前时间的另一个目录(历史文件夹)。但是,每次我执行这个 Perl 脚本时,它都会显示“第 18 行没有这样的文件或目录”

下面是我的代码:

## SET FILE PATHS
my $myBCPDump = "//Server-A/X:/Main Folder/Log/bcpLog.txt";
my $myBCPLog = "//Server-A/X:/Main Folder/History/bcpLog" . $myDate . ".txt"; 

my $isJunk = "rows successfully|rows sent to SQL|packet size|Starting copy|^\n|Clock Time";

open (LOGFILE, ">$myBCPLog") or die $!; ##Line 18

close (LOGFILE);

我知道它找不到文件或目录是因为 ##SET FILE PATHS 没有正确执行,我不知道为什么。

【问题讨论】:

  • 您使用的是什么操作系统? //Server-A/X:/... 在 Windows 中不是有效路径,我之前在 unix 中从未见过类似的东西。
  • 你的意思是它不是一个有效的路径?
  • : 不允许使用,除非在驱动器号 (C:...) 之后。但是您有一个 UNC 路径 (\\server\share\...),而这些路径没有驱动器组件。你的意思是//Server-A/X$/... 吗?不要忘记转义$
  • 我已经尝试过了,它仍然给了我同样的错误。
  • Windows API 可以互换地接受 / & \,但请注意 Perl 中的字符串文字可能会在各种情况下使用 \ 作为转义字符,尤其是在 UNC 路径的开头。

标签: perl


【解决方案1】:

//Server-A/X:/... 在 Windows 中不是有效路径。路径中不允许使用冒号 (:),除非在驱动器号 (C:...) 之后。但是您有一个 UNC 路径(\\server\share\... aka //server/share/...),而那些没有驱动器组件。你的意思是//Server-A/X$/... 吗?如果是这样,

"//Server-A/X:/..."

应该改成任何一个

"//Server-A/X\$/..."

'//Server-A/X$/...'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-26
    • 1970-01-01
    • 2014-11-23
    • 1970-01-01
    • 2016-04-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多