我正在尝试通过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的东西,但是我还没弄清楚这是不是我需要的,也不知道如何正确创建一个。
答案 0 :(得分: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"