यहाँ मैं सामान्य रूप से उपयोग करते हैं। अगर मैं इसे फिर से कर रहा था, तो शायद मैं इसे थोड़ा अलग तरीके से करूँगा, लेकिन यह काफी अच्छा काम करता है कि मेरे पास वर्षों से इसे देखने का कोई कारण नहीं है (वास्तव में, मुझे यकीन है कि आखिरी बार मैं कुछ भी यह करने के लिए एक्सटेंशन की सूची में "cmd" जोड़कर रहा था जब मैं Win32 के लिए डॉस से यह पोर्ट ...
// Which.c:
#include <io.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
char *extensions[] = { "com", "exe", "bat", "cmd", NULL };
int is_exe(char *ext) {
int i;
for (i = 0; extensions[i]; i++)
if (0 == stricmp(ext, extensions[i]))
return 1;
return 0;
}
int main(int argc, char **argv) {
char path[FILENAME_MAX];
char buffer[FILENAME_MAX];
char *path_var;
char *ext;
char *dir;
int i;
if (argc != 2) {
fprintf(stderr, "Usage: which <filename>\n");
return 1;
}
/* First try to find file name as-is.
*/
if (0 == access(argv[1], 0)) {
printf("\n%s", argv[1]);
return 0;
}
/* Okay, it wasn't found. See if it had an extension, and if not, try
* adding the usual ones...
*/
ext = strrchr(argv[1], '.');
if (0 == ext++ || !is_exe(ext)) {
for (i = 0; extensions[i]; i++) {
sprintf(buffer, "%s.%s", argv[1], extensions[i]);
if (0 == access(buffer, 0)) {
printf("\n%s", buffer);
return 0;
}
}
if (NULL == (path_var=getenv("PATH")))
return 1;
dir = strtok(path_var, ";");
do {
for (i = 0; extensions[i]; i++) {
sprintf(buffer, "%s\\%s.%s", dir, argv[1], extensions[i]);
if (0 == access(buffer, 0)) {
printf("\n%s", buffer);
return 0;
}
}
} while (NULL != (dir = strtok(NULL, ";")));
}
else {
if (NULL == (path_var=getenv("PATH")))
return 1;
dir = strtok(path_var, ";");
do {
sprintf(buffer, "%s\\%s", dir, argv[1]);
if (0 == access(buffer, 0)) {
printf("\n%s", buffer);
return 0;
}
} while (NULL != (dir = strtok(NULL, ";")));
}
return 1;
}
स्रोत
2010-08-11 00:45:40
फिर से शुरू करने के लिए बहुत लंबा शुरू करें? एक स्क्रिप्ट/छोटा प्रोग्राम बनाएं जो आपके लिए इसे पुन: सक्रिय करता है। बस ";" से अलग Subfolders में खोदने की कोई जरूरत नहीं है। – OscarRyz
नोट: 'JAVA_HOME' को जेडीके को इंगित करना चाहिए। जावा प्रोग्राम चलाने के लिए जेडीके की आवश्यकता नहीं है, केवल एक जेआरई भी पर्याप्त है। एंडुसर्स के विशाल बहुमत में सिर्फ एक जेआरई है। – BalusC
@OscarRyz: यह करने योग्य है, मैं उत्सुक हूं कि जावा के स्थान को cmd से एक सरल कमांड निष्पादित करके कहने का सीधा तरीका है :) –