このディレクトリの索引
http://hibari.2ch.net/test/read.cgi/tech/1276873238/575
#  学校で宿題が出ました、助けて下さい>< 
#  実行すると下記のような動作をするバッチファイルスクリプトを作成したいです。 
#  よろしくお願いいたします。 
#   
#  実行するバッチファイルが現在存在するディレクトリにある全てのテキストファイルを書き換えるバッチを作成しなさい。 
#  テキストファイルの中に、pass = "C:\Users\users\Documents\workspace\test.txt"というような 
#  パスを変数に代入する記述があった場合 
#  そのパスの部分を、pass = "現在のバッチファイルの存在するディレクトリ\test.txt" 
#  という風にディレクトリ名だけを(ファイル名は書き換えない)書き換えるバッチを作成しなさい。 
# 

'実行するバッチファイルが現在存在するディレクトリにある全てのテキストファイルを書き換えるバッチを作成しなさい。テキストファイルの中に、pass = /Users/users/Documents/workspace/test.txt"というようなパスを変数に代入する記述があった場合そのパスの部分を、pass = "現在のバッチファイルの存在するディレクトリ/test.txt"という風にディレクトリ名だけを(ファイル名は書き換えない)書き換えるバッチを作成しなさい。'(_テキストファイル) :-
        pwd(CWDIR),
        get_chars(_テキストファイル,Chars_1),
        'ディレクトリ名だけを(ファイル名は書き換えない)書き換える'(CWDIR,Chars_1,Chars_2),
        put_chars(_テキストファイル,Chars_2).

'ディレクトリ名だけを(ファイル名は書き換えない)書き換える'(CWDIR,Chars_1,Chars_2) :-
        atom_chars(CWDIR,CWDIRL),
        search_part_list(Chars_1,[<,p,a,s,s,' ',=,' ','"'],['"'],L0,L1,L2),
        パス部分を現在のディレクトリに置換する(CWDIRL,L1,L11),
        'ディレクトリ名だけを(ファイル名は書き換えない)書き換える'(CWDIR,L2,Chars_2_2),
        append(L0,L11,Chars_2_2,Chars_2),!.
'ディレクトリ名だけを(ファイル名は書き換えない)書き換える'(CWDIR,Chars,Chars).

パス部分を現在のディレクトリに置換する(CWDIRL,L1,L11) :-
        ファイル部分(L1,_ファイル部分),
        append(CWDIRL,[/|_ファイル部分],L11).

ファイル部分(_実質パス部分,_ファイル部分) :-
        append(_,[/|_ファイル部分],_実質パス部分),
        \+(member(/,_ファイル部分)),!.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

search_part_list(L,SL0,SL2,L0,L1,L2) :-
         append(SL0,[R0],SL0_1),
         append(SL2,[R2],SL2_1),
         partition_list_1(L,SL0_1,L0,R1),
         partition_list_1(R1,SL2_1,L1,L2).

partition_list(L1,_指定ならび,L,R) :-
        append(_指定ならび,[R1],_指定ならび_1),
        partition_list_1(L1,_指定ならび_1,LX,R).

partition_list_1([],_,[],[]) :- !.
partition_list_1(L1,L1,[],R) :- !.
partition_list_1([A|R1],L1,[A|R2],R) :-
        partition_list_1(R1,L1,R2,R).