CDコマンドを拡張してみる

最終更新日:2004-07-27.

今回は、CDコマンドを拡張したものを作成してみます。
通常CDコマンドはカレントディレクトリを表示したり変更したりします。
でも、ドライブも変更できると良いですね。
後、ディレクトリの区切りめを表す文字としてスラッシュ(/)が
使用できると入力時にちょっと楽だったりします。

ということで・・・。
拡張CDコマンド、XCDを作成してみましょう。
+------------------------------------------------------------+
/* filename=no035-1.c */
/* include */#include <stdio.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
#include <direct.h>
#include <dos.h>
/* main */
int main(int argc, char **argv)
{
char c;
char cmd[128];
char *p;
int drive=0;
int drive2=0;
/* パラメータがなければ */
if( argc==1 ){
printf("異動先のドライブ名、ディレクトリ名を指定してください。\n");
exit(1);
}
/* カレント表示 */
if( strcmp(argv[1], ".")==0 ){
getcwd(cmd, 64);
printf("%s\n", cmd);
exit(1);
}
/* ドライブの区切り文字があれば */
if( argv[1][1]==':' ){
c=toupper(argv[1][0]);
drive=c-'A'+1;
}
strcpy(cmd, argv[1]);
p=&cmd[0];
/* 繰り返し */
while( *p ){
if( (*p)=='/' )
(*p)='\\';
p++;
}
/* ディレクトリの変更 */
chdir(cmd);
/* ドライブの変更 */
if( drive>0 )
_dos_setdrive(drive, &drive2);
return 0;/* 終了 */
}
+------------------------------------------------------------+

上記をコンパイルして実行すると、以下のように表示されました。
C:\> XCD C:/WINDOWS/TEMP
C:\WINDOWS\TEMP>

戻る