0

我正在尝试通过 R 运行 exiftool 以使用 system() 命令从照片中获取元数据。当我在 Mac 上运行它时,它工作正常,但是从 Windows 中我没有正确链接到 cmd.exe 并从此代码中得到以下错误:

    exif_datetime <- function(path) {

     exif_cmd <- 'exiftool.pl -T -r -DateTimeOriginal '  
     cmd <- paste(exif_cmd, "'", path, "'" ,sep='')
     exif_time <- system(cmd, intern = TRUE) 

    exif_time
}
   photo_time <- exif_datetime('C:/Users/photo.jpg')
   photo_time



   Error in system(cmd, intern = TRUE) : 
   'CreateProcess' failed to run 'C:\Windows\exiftool.pl -T -r -DateTimeOriginal 'C:/Users/photo.jpg''

当我在 Windows 中从 cmd.exe 运行 exiftool 命令时,我得到了正确的结果。我的 exiftool.pl 位于计算机上的 C:Windows 文件夹中。关于我缺少的 PATH 有什么东西吗?另外,我记得一些关于 windows 需要 shell 的事情,但我还没有弄清楚这是否是我需要的,也不知道如何正确创建一个。

4

1 回答 1

1

感谢您的所有建议。我找到了一个适合我的解决方案,涉及shell()命令。我认为它必须以system()某种方式与命令合并,但似乎它会自行工作。

    exif_datetime <- function(path) {

    exif_call <- 'exiftool.pl'  
    exif_cmd<-' -r -T -DateTimeOriginal '

    exif_timestamp <- shell(paste(exif_call, exif_cmd, path), intern=T) 

    exif_timestamp
    }
  photo_time <- exif_datetime('C:/Users/photo.jpg')
  photo_time


  [1] "2016:02:14 11:50:29"
于 2016-02-16T16:11:29.727 回答