【发布时间】:2019-06-05 05:34:00
【问题描述】:
我编写了一个程序来使用苹果脚本在 cocoapp 中执行命令。我面临2个问题 1)applescript总是从projet目录而不是从根目录执行 2)cd 命令正在运行,但是当我执行 pwd 时,它显示的是以前的目录名而不是新的目录名。
+(BOOL)callAppleScriptForScriptFile:(NSString *)command{
BOOL isError = YES;
NSAppleEventDescriptor* returnDescriptor = NULL;
NSDictionary* errorDict = nil;
NSString *appleScriptCommand = [NSString stringWithFormat:@"do shell script \" %@ &> /Users/username/Desktop/.output.txt\" user name \"username\" password \"password\" with administrator privileges",command];
//NSLog(@"Script command %@",appleScriptCommand);
NSAppleScript* scriptObject = [[NSAppleScript alloc] initWithSource:appleScriptCommand];
returnDescriptor = [scriptObject executeAndReturnError: &errorDict];
if (errorDict != NULL){
NSLog(@"%@",errorDict);
isError = NO;
}
DescType descriptorType = [returnDescriptor descriptorType];
NSLog(@"descriptorType == %@", NSFileTypeForHFSTypeCode(descriptorType));
NSData *data = [returnDescriptor data];
double currentPosition = 0;
[data getBytes:¤tPosition length:[data length]];
NSLog(@"currentPosition == %f", currentPosition);
[self readFromFileAndSend];
return isError;
}
期待这样的输出 光盘桌面 o/p:成功(无需打印) 密码 o/p:桌面
【问题讨论】:
-
do shell script 语句中的所有内容都运行在同一个环境中,即它从父级调用时继承的环境,因此您需要将所有命令包含在相同的语句 - 你使用什么命令字符串?
-
我没有使用流水线命令。我正在尝试复制一个像终端一样工作的应用程序。我会一一传递命令
标签: macos command applescript applescript-objc